c# - 修复跨线程异常

标签 c# .net multithreading exception

我需要一些帮助来修复跨线程异常。我正在使用通常可以解决此问题的 Invoke,但由于某种原因它无法正常工作:

void paintTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
    Invoke(new InvalidateFromSepThreadDel(InvalidateFromSepThread));
}
delegate void InvalidateFromSepThreadDel();
void InvalidateFromSepThread()
{
    TailGraph.Invalidate();
}

Invoke 抛出异常:

$exception {"Cross-thread operation not valid: Control 'XTailGraph' accessed from a thread other than the thread it was created on."} System.Exception {System.InvalidOperationException}

最佳答案

Invoke 将编码返回线程控制(正在使用 Invoke 方法的线程)是在其上创建的。确保其他控件也在所述线程上创建——也就是说,确保一个控件不是在“错误的线程”上创建的。。 p>

此外,由于没有指定 Invoketarget,因此它将是包含对象/类的 this.Invoke --可能不合适。

(或者正如 Hasan Khan 指出的那样,考虑 WinForms 计时器......在这种情况下,回调将始终在创建计时器的线程中运行。)

快乐编码。

关于c# - 修复跨线程异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7919725/

相关文章:

c++ - boost::scoped_lock 不适用于局部静态变量?

c# - 使用 Attributes 为属性的 set/get 方法添加装饰代码

c# - 为整个项目全局声明预处理器符号(如 DEBUG)

c# - 从 SQL Server 代理(作业)运行 C# 控制台应用程序?

multithreading - 多进程Web服务器与多线程Web服务器?

java - JAVA中如何通知一个类中的所有线程?

c# - Azure Bootstrap 字体

c# - TFS 构建代理和 Office PIA

c# - 我不能在 LinkBut​​ton 中使用 Eval 吗?

c# - FileStream 在应用程序冷启动时非常慢