我在这里有这个代码,开始一个进程等待8秒,然后再次杀死它.
for (int i = 0; i < 20; i++)
{
Process pro = new Process();
pro.StartInfo.FileName = @"C:\Program Files (x86)\Mozilla Firefox\firefox.exe";
pro.StartInfo.WindowStyle = ProcessWindowStyle.Minimized;
pro.Start();
Thread.Sleep(8000);
try
{
pro.Kill();
Thread.Sleep(1000);
}
catch
{
return;
}
}
Run Code Online (Sandbox Code Playgroud)
当我在调试模式或直接从.exe运行应用程序时,它成功启动并终止进程,但它被冻结.我无法移动窗口或点击其他按钮..
Eri*_*ert 12
它被冻结了.我无法移动窗口或点击其他按钮.
那是对的.你说让线程入睡.
人们似乎有这样一个奇怪的想法,按下按钮时运行代码是由魔术发生的.魔术不会发生这种情况.之所以会发生这种情况,是因为该线程运行的代码处理来自操作系统的"单击按钮"消息.如果你让一个线程进入休眠状态,它会停止处理这些消息,因为它处于睡眠状态.
让一个线程进入睡眠是99%的时间完全错误的事情,所以就是不要这样做.
在C#5中做的正确的事情是制作你的方法async,然后做一个await Task.Delay(whatever).或者,创建一个在几秒钟后滴答的计时器.在tick处理事件中,关闭计时器并在那里执行逻辑.
| 归档时间: |
|
| 查看次数: |
828 次 |
| 最近记录: |