我正在使用Telerik的radcontrols for winforms。
下面的程序可以重现我的问题:
public partial class RadForm1 : Telerik.WinControls.UI.RadForm
{
public RadForm1()
{
InitializeComponent();
}
private void radButton1_Click(object sender, EventArgs e)
{
RadMessageBox.SetThemeName("Office2010Black");
RadMessageBox.Show("Hello World");
//MessageBox.Show("hello world");
run();
}
public void run()
{
var thread = new Thread(() => run2());
thread.IsBackground = true;
thread.Start();
}
public void run2()
{
//MessageBox.Show("hello");
RadMessageBox.Show("Hello");
}
}
每当尝试使用Telerik的消息框时,我都会得到一个跨线程异常。但是,如果我使用标准的winform消息框,那么它就会工作得很好。
也许我遗漏了什么。
更新:对于其他有同样问题的人这是官方回复的链接点击这里
winform MessageBox
类被特别设计为能够从非ui线程调用。
RadMessageBox
则不是。它是在假设它将从UI线程调用的情况下设计的。