我想使用 ManualResetEvent
而不是 Thread.Sleep
来防止我的 UI 释放。
这是我尝试过的:
private ManualResetEvent manualResetEvent = null;
private void Form1_Load(object sender, EventArgs e)
{
ManualResetEvent manualResetEvent = new ManualResetEvent(false);
}
在我的操作之后我想等待 5 秒:
manualResetEvent.WaitOne(5000);
我的问题是我的用户界面仍然卡住......
最佳答案
现在情况更加清楚了。
在这种情况下,您可以在示例中使用backgroundworker在表单中定义backgroundworker。
当计时器事件 ID 触发时,您可以使用
'assume that backgroundworker is named "BBC"
'support cancellation task
BBC.WorkerSupportsCancellation = True
'enable report progress
BBC.WorkerReportsProgress = True
'run it
BBC.RunWorkerAsync()
当它在 BBC_RunWorkerCompleted 或您的方法委托(delegate)中完成时,您可以在 trhead 安全模式下显示一条消息。
这就是您的全部内容,不会卡住,您也可以使用您的应用程序等。我使用此方法来执行长任务或删除等多个任务。您必须设置自己的方法/逻辑查看您的文件是否已创建到该文件夹中。
关于c# - 如何使用 ManualResetEvent 而不卡住我的 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22936508/