c# - 启动并等待新线程而不阻塞 UI 线程

标签 c# multithreading asynchronous join task

我有一个无法异步运行的方法。为了不阻塞UI线程,我想打开一个新线程并运行其中的方法。然而,这个线程必须等待额外的代码按照方法执行才能工作。无法异步运行的方法转换文件需要一些时间,具体取决于文件的大小。但我希望窗口保持可用,这样 UI 线程就不会被阻塞。我已经在网上搜索过,但没有找到合适的。

最佳答案

async void button1_Click(....)
{
   label1.Text = "busy...";
   await Task.Run(() => { RunOldCode(); });
   label1.Text = "done.";   // safe to use the UI
}

请注意,async void 只能用于(简单)事件处理程序。在大多数其他情况下这是有问题的。

关于c# - 启动并等待新线程而不阻塞 UI 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63645707/

相关文章:

c# - 是否可以从 .NET 库代码中检测到不受控制的取消?

asynchronous - 在 s3 中传输数据的有效方法

c# - 是否可以在 C# 控制台应用程序中将整数值作为方法参数传递

c++ - 在 C++ 中使用带有指针结构的 beginthread

JavaScript:异步函数

java - UDP - 多线程

java - 线程安全发布者

c# - 如果术语在搜索文本中被换行符打断,我如何使用 RegEx 查找术语

c# - 为什么引用子类对象不能引用父类对象?

c# - 为什么应该使用 ContainsKey 而不是 TryGetValue 是有原因的