gpt4 book ai didi

c# - 在任务中调用失败

转载 作者:行者123 更新时间:2023-12-02 15:35:08 25 4
gpt4 key购买 nike

我有这段代码:

var task = System.Threading.Tasks.Task.Factory.StartNew(() =>
{
// Code...
Invoke(new Action(() => progressBar.Increment(1)));
// Code...
});

task.Wait();

但调用失败,没有异常或任何类型的错误。似乎“等待”阻止了表单的刷新,可能是因为我仍在方法中。

我该如何解决这个问题?

谢谢

最佳答案

你让自己陷入了僵局。

当任务正在运行(在不同的线程上)并且您调用 Invoke 时,它想在主线程上调用它。但是主线程正在等待任务完成...(task.Wait() 将阻塞直到准备就绪)

如果你使用:

await task;

使用这段代码的方法应该被标记为异步。编译器会把这个方法切成碎片,在等待的时候,消息循环/线程会再次运行。当任务准备就绪时,将执行该方法的其余部分。 (在 await 任务下方;)


查看此处了解更多信息:await vs Task.Wait - Deadlock?

关于c# - 在任务中调用失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19050943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com