在我的程序中,我有2个线程,第一个是不断运行while (isRunning) {
对于第二个线程方法,我需要它睡一会儿,而它是真的。
我在当前代码中面临的问题是我在任务管理器中为我的程序获得Not Responding
。
我如何解决这个问题,请注意我使用的是Framework 2.0。
private void initialize() {
MyWeb.connectToServer();
commandThread = new Thread(checkForCommandThread); // The thread that I need not to freeze the program
commandThread.Start();
}
private void checkForCommandThread() {
while (isRunning) {
Thread.Sleep(10000);
// while this thread is sleeping, the program should not be frozen
// do the work here, after the sleep
}
}
答案 0 :(得分:0)
我的程序似乎得到了这个Not Responding
,因为我所拥有的另一个线程,它一直在运行,没有任何Sleep,并且运行得尽可能快,因此制作程序Not Responding
并使用高达13%的CPU ......
一个简单的Thread.Sleep(10);
修复了所有内容
答案 1 :(得分:-1)
好的,假设你有这样的代码
public static bool _isRunning = false;
private void button1_Click(object sender, EventArgs e)
{
_isRunning = true;
var thread = new Thread(DoWork) {IsBackground = true};
thread.Start();
while (_isRunning)
{
//HERE GOES THE MAGIC
Application.DoEvents();
}
}
private static void DoWork()
{
System.Threading.Thread.Sleep(20000);
_isRunning = false;
}