我有一个方法不能异步运行。为了不阻塞UI线程,我想打开一个新线程并在其中运行方法。但是,这个线程必须等待根据方法执行的附加代码才能工作。无法异步运行的方法转换文件,这需要一些时间,具体取决于文件的大小。但我希望窗口保持可用,这样UI线程就不会被阻塞。我已经在网上搜索过了,但没有找到合适的。
async void button1_Click(....)
{
label1.Text = "busy...";
await Task.Run(() => { RunOldCode(); });
label1.Text = "done."; // safe to use the UI
}
请注意,async void
应仅用于(简单的(事件处理程序。这在大多数其他情况下都是有问题的。