2013-05-20 2 views
0

winforms에 Telerik의 radcontrols를 사용하고 있습니다. 여기 telerik의 radcontrols가 크로스 스레드 예외를 발생시킵니다.

내 문제를 재현 할 수있는 프로그램입니다 :

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 메시지 상자를 사용하면 절대적으로 정상적으로 작동합니다.

아마도 여기에 뭔가 빠져 있습니다.

UPDATE : 다른 사람이 같은 문제를 가진 사람을위한

Click here

답변

2

MessageBox 클래스가 구체적으로 할 수 있도록 설계되었습니다의 WinForm이 아닌 UI 스레드에서 호출 할 수 회신 offical 한 할 수있는 링크입니다.

RadMessageBox은 간단하지 않았습니다. 그것은 UI 스레드에서 호출 될 것이라는 가정하에 설계되었습니다.

+0

제안 된 솔루션? –

+0

@WinCoder UI 스레드에서 메서드를 호출합니다. – Servy

+0

음 .... 위의 코드는 문제를 재현하기 위해 만든 샘플 코드입니다. UI 스레드에서 컨트롤을 호출하면 제작 코드에서 중요한 조정이 필요합니다. –

관련 문제