【发布时间】:2014-03-26 11:14:24
【问题描述】:
您好,我在 .net 4.0 中遇到了一个奇怪的问题。我正在从我的主窗体线程调用以下代码,并且在变量 MainForm.NumberOFWindows 上收到“对象引用未设置为实例”异常(尽管它已初始化),但我不知道为什么。对我来说真正奇怪的是异常也没有被 try catch 异常子句捕获。 有人可以解释一下我的问题吗?为什么会发生异常以及为什么它没有被 try catch 子句捕获?
try
{
MyThread = new Thread(delegate()
{
Notify.UserInput(this,ref MainForm.NumberOFWindows);
});
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
【问题讨论】:
-
@MaxMommersteeg 那应该达到什么目的?
MyThread大概是一个属性。 -
try/catch 不会捕获它,因为它当时没有运行。运行 MyThread 的代码在哪里?
-
要捕获错误,您需要在委托中放置一个 try catch
-
如果没有声明,那么代码甚至不会编译。它显然是这样做的,因为这是一个运行时异常。
-
MainForm 也不应该从除主线程之外的任何地方访问。
标签: c# multithreading exception-handling