我真的不明白这个代码为什么会出错。请您自己检查一下代码。
void dispatcherTimer_Tick(object sender, EventArgs e)
{
string srUrl = lstLocalIndex[irLocalIndex] + lstMainIndex[irMainIndex].Replace("0;","");
Task.Factory.StartNew(() =>
{
startNewWindow(srUrl);
});
}
void startNewWindow(string srUrl)
{
NewWindowThread<TitleWindow, string>(c => new TitleWindow(c), srUrl);
}
现在错误发生的地方是这段代码。我也会附上截图。
private void NewWindowThread<T, P>(Func<P, T> constructor, P param) where T : Window
{
Thread thread = new Thread(() =>
{
T w = constructor(param);
w.Show();
w.Closed += (sender, e) => w.Dispatcher.InvokeShutdown();
try
{
System.Windows.Threading.Dispatcher.Run();
}
catch
{
}
});
thread.SetApartmentState(ApartmentState.STA);
try
{
thread.Start();
}
catch
{
}
}
尽管我在新线程中调用它们,但此错误会导致整个软件抛出错误并停止工作 :(
这行代码抛出错误:System.Windows.Threading.Dispatcher.Run();
请查看屏幕截图:
C# 4.0 WPF
Task
中,另一个是Thread
,最好将要运行的代码作为启动代码放置在Thread
中。 - casperOne