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