相关疑难解决方法(0)

如何中断Console.ReadLine

是否可以以Console.ReadLine()编程方式停止?

我有一个控制台应用程序:大部分逻辑运行在不同的线程上,在主线程中我接受输入使用Console.ReadLine().当分离的线程停止运行时,我想停止从控制台读取.

我怎样才能做到这一点?

.net c# console multithreading

20
推荐指数
5
解决办法
1万
查看次数

如果线程在console.readline上等待线程被挂起?

如果线程在console.readline上等待线程被挂起.如果不是它的状态是什么?

c#

10
推荐指数
2
解决办法
1946
查看次数

当所述线程正在执行Console.ReadLine时,如何在.NET中中止另一个线程?

我的控制台应用程序正在执行一个完全专注于用户界面的线程,它花了很多时间阻塞Console.ReadLine()(这个调用花费时间深入Windows的内部,在.NET框架的控制之外).

我需要中止这个帖子.但是,以下代码似乎不起作用:

this.UserInterfaceThread.Abort();
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?Thread.Interrupt()会有用吗?

更新

正如汉斯帕斯特所指出的:

当CLR中止时,CLR对线程的状态施加了相当明智的规则.Thread.Abort()的危险是众所周知的,当然不能可靠地工作就是中止正在执行非托管代码的线程.调用Console.ReadLine()时就是这种情况,该线程深埋在Windows操作系统代码中.

解决方案是简单地将[enter]键击到当前运行的控制台应用程序中,该应用程序取消阻止Console.ReadLine(),以便线程立即中止.

我们不能使用SendKeys,因为这是特定于Windows窗体,它还需要当前窗口具有焦点.

解决方案是使用inputsimulator.codeplex.com上的库来封装Windows SendInput()调用.

请参阅示例代码:

.NET调用将[enter]键发送到当前进程,这是一个控制台应用程序?

.net c# multithreading visual-studio-2010

10
推荐指数
2
解决办法
1567
查看次数

如何在c#中等待控制台输入15秒左右

我需要在控制台中询问输入并等待几秒钟后我需要默认为某个值.基本上如何在c#中控制台输入并继续默认设置?如果你有一个很棒的示例代码.

c# multithreading sleep user-input

8
推荐指数
1
解决办法
5349
查看次数

等待Keypress(或)N秒过期

假设我的控制台程序执行多个冗长的任务.在这些任务之间,我希望它暂停 - 无论是几秒钟还是直到任何按键被按下.(以先到者为准.)

这些标准很容易自行检查,但是当我尝试组合它们时它们拒绝相处:在ReadKey启动之前,计时机制暂停几秒钟,或者 Readkey完全阻塞线程直到满意为止.我怎样才能满足这两个条件?

c# sleep timer keypress

8
推荐指数
1
解决办法
9170
查看次数

Console ReadKey超时

我已经构建了一个简单的控制台应用程序,我需要给用户一个特定的时间来输入一个keychar.

我应该用这个吗?

System.Threading.Thread.Sleep(1000);
Run Code Online (Sandbox Code Playgroud)

对于那些谁不明白,我需要的程序跳过Console.ReadKey().KeyChar;x秒.

这可能吗?

c#

7
推荐指数
2
解决办法
6021
查看次数

蝙蝠游戏 使用set/p添加计时器

我正在制作一个.bat游戏,当前在输入命令时代码是

set /p command=
Run Code Online (Sandbox Code Playgroud)

我想知道的是,如果你能以某种方式有输入命令的时间限制.例如,如果你打了一个守卫,并且你没有在5秒内发出命令,那么守卫就会攻击.

这不是一件迫切需要的事情,我只是想知道更多关于我所受到的限制,而且我认为无论如何我都知道aawer(答案是你不能)

谢谢

batch-file

5
推荐指数
1
解决办法
2958
查看次数

同时使用Readline()和ReadKey()

有什么方法可以同时检测Readline和ReadKey,因此在大多数情况下,它应该表现为readline,除了一些应该检测到的特殊按键输入之外?

我需要一些“并行”实现来引入同时性。下面的代码是同步的,不能满足我的需要

while ((line = Console.ReadLine()) != "x")
{    
    if (line == "BLABLA")
    {
        //Stuff
    }

    else
    {
        //Stuff
    }

    ConsoleKeyInfo ki = Console.ReadKey(true);
    if ((ki.Key == ConsoleKey.V) && (ki.Modifiers == ConsoleModifiers.Control))
    {
        //Stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

c# console-application

5
推荐指数
1
解决办法
3067
查看次数

如果没有输入,则在一定时间后退出循环

我只是想知道是否可能以及如何实现此功能,如果没有来自用户的输入,我们将退出循环.例如,如果用户在1分钟后没有输入任何内容,我想退出循环.这是我的C代码:

#include <stdio.h>
#include <conio.h>
#include <time.h>

int main(void)
{
    int x;
    time_t end = time(0) + 60;
    printf("Enter a number : ");

    while (time(0) < end)
    {
        if((scanf("%d", &x)) != EOF || (getchar() != '\n'))
        {
            time_t end2 = time(0) + 60;
            while(time(0) < end2);
            main();
        }
        else
        {
            printf("%d", x);
            main();
        }
    }
    main();
}
Run Code Online (Sandbox Code Playgroud)

c

5
推荐指数
1
解决办法
1652
查看次数

等待用户输入C#console app的设置时间

对于控制台应用程序,我需要知道如何在设定的时间(大约10秒)内等待用户输入一个或一组键,然后再继续应用程序的"自动运行"部分.

这是困扰我,因为我无法弄清楚计时器是如何工作的,或者是threading.sleep,我应该使用什么?一整天都在谷歌搜索.

一些伪代码:

1.app打开

2.app等待10秒,用户点击"k"键.

3.如果用户点击k,则转到4.如果用户没有,请转到5.

4.运行一个函数(打开一个表单)

5.运行一个函数(做某事)

我打赌简单,我只是不明白发生了什么.

c# user-input wait

4
推荐指数
1
解决办法
9917
查看次数

C# - 如何"强制退出"一种方法

[控制台应用]

我想在计时器上有一个方法(Thread.Sleep)并在它旁边运行另一个方法,等待用户的响应.如果计时器在用户可以响应(ReadKey)之前耗尽,那么它们将失去生命.

简而言之,我怎样才能在计时器上安装ReadKey?

c# methods multithreading timer

2
推荐指数
1
解决办法
443
查看次数

.NET调用将[enter]键发送到当前进程,这是一个控制台应用程序?

有没有办法将[enter]键击到当前进程中,强制在Console.ReadLine()上阻塞线程?

更多信息(你可以忽略这个)

我有一个C#控制台应用程序正在运行另一个在Console.ReadLine()上阻塞的线程.由于Console.ReadLine调用在Windows中非托管代码的内部深处运行的本机Windows线程,因此在解除阻塞之前它不会中止,并且直到它在键盘上接收到按键才会发生.

因此,当我在这个线程上调用".Abort"时,在C#.NET中,直到我在控制台上手动按[enter]才会这样做.我想自动化这个按键.

.net c# visual-studio

2
推荐指数
1
解决办法
9771
查看次数

Console.ReadKey 取消

可能的重复:
如何向 Console.ReadLine() 添加超时?

如果我有一个 Console.ReadKey(),它会使整个程序卡住,我怎样才能让它读取密钥 1 秒,如果未读取密钥,则会设置其他内容。

c# readkey

1
推荐指数
3
解决办法
6566
查看次数