gpt4 book ai didi

c# - 函数中的 InvalidAsynchronousStateException 用于检查控制是否需要调用

转载 作者:行者123 更新时间:2023-11-30 17:20:31 25 4
gpt4 key购买 nike

我使用 Stack Overflow 用户提供的这个功能来更新 BackgroundWorker 的控件。

static void SynchronizedInvoke(ISynchronizeInvoke sync, Action action)
{
// If the invoke is not required, then invoke here and get out.
if (!sync.InvokeRequired)
{
// Execute action.
action();

// Get out.
return;
}

// Marshal to the required thread.
sync.Invoke(action, new object[] { });
}

此功能到目前为止一直运行良好。我刚得到这个异常(exception):

InvalidAsynchronousStateException

这是什么意思,我该如何预防?

最佳答案

这里的问题是 ISynchronizeInvoke 对象绑定(bind)到的线程不再存在。例如,如果您生成后台线程并且 UI 线程在后台任务完成之前退出,就会发生这种情况。该线程不再存在,因此没有可调用的内容,您会得到异常。

没有好的方法可以防止这种情况发生。最好的做法是将 Invoke 调用包装在处理此异常的 try/catch 中。

关于c# - 函数中的 InvalidAsynchronousStateException 用于检查控制是否需要调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4108177/

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