我有一个无法异步运行的方法。为了不阻塞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/