c# - 如何使用 ManualResetEvent 而不卡住我的 UI

标签 c# .net manualresetevent

我想使用 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/

相关文章:

c# - SQLite 错误 : The 'DbProviderFactories' section can only appear once per config file (IBM Client Access)

c# - 如何比较同一类的两个对象?

c# - 如何在充满常量的类中使用泛型?

c# - 使用 CaSTLe 单例会导致 ASP.NET Web 应用程序中的争用

.net - 为 Xamarin 的 Mono Touch/Android 框架编译 AWS SDK (.NET)

c# - 磁盘上连续的内存映射文件

c# - 为什么 ManualResetEventSlim.Wait 似乎不会在整个等待时间内阻塞?

从命名管道并发选择

objective-c - Objective-C中如何在指定时间唤醒线程

c# - 从 C# 运行 Python .PY 脚本