gpt4 book ai didi

c# - Task_Dispose_NotCompleted 错误,但我不知道为什么

转载 作者:行者123 更新时间:2023-11-30 23:33:19 25 4
gpt4 key购买 nike

今天我遇到了一个关于任务的非常奇怪的错误。在我的代码中,我尝试以这种方式使用 using 语句:

protected MyClass() {
using(var initTask = new Task(() => Init())) {
initTask.ContinueWith(result => InitCompletedCallBack(result));
initTask.Start();
}
}

protected virtual void Init() {}

private void InitCompletedCallBack(AsyncResult result) {
// Stuff
}

当我执行此代码时,出现 Task_Dispose_NotComplete 错误。 InitCompletedCallBack 完成时发生错误。

在尝试 arounf 时,我将 using 更改为:

using(var initTask = new Task(() => Init())) {
initTask.ContinueWith(result => InitCompletedCallBack(result));
initTask.Start();
Thread.Sleep(1000);
}

这奏效了。但是,这段代码会在应用程序启动时执行多次,从而使应用程序卡住大约 15-20 秒。但它表明某些东西(在任务中?)至少需要一秒钟才能完成。

知道是什么原因导致了这种行为吗?

提前致谢。

编辑当我将等待时间设置为 100 毫秒时,会发生错误。 StackTrace 的第一行是:

bei System.Threading.Tasks.Task.Dispose(Boolean disposing)
bei System.Threading.Tasks.Task.Dispose()
bei MyClass..ctor() in c:\Path\to\source\MyClass.cs:line 33.

第 33 行是 using block 的右括号。

最佳答案

Any ideas what causes this behavior?

您的代码导致此行为。您处理尚未完成的任务。你为什么要在你处置它的地方处置它? using block 放在什么地方有意义吗?

不要处理您仍然依赖的任务。删除 using block 。

关于c# - Task_Dispose_NotCompleted 错误,但我不知道为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34001164/

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