2012-04-13 110 views
0

我使用LocalMessageReceiverLocalMessageSender類在兩個Silverlight應用程序(一個在瀏覽器中,另一個在瀏覽器中)之間進行通信。 我需要在新線程中執行messageReceiver.MessageReceived。 這是我的基本代碼:在線程上執行EventHandler

public MainPage() 
{ 
    LocalMessageReceiver messageReceiver = new LocalMessageReceiver("Msg", ReceiverNameScope.Global, LocalMessageReceiver.AnyDomain); 
    messageReceiver.MessageReceived += MessageReceiver_MessageReceived; //I want to execute this in a new Thread. 
    messageReceiver.DisableSenderTrustCheck = true; 

    try 
    { 
     messageReceiver.Listen(); 
    } 
    catch (ListenFailedException) 
    { 
     //to do 
    } 
} 

private void MessageReceiver_MessageReceived(object sender, MessageReceivedEventArgs e) 
{ 
    string command = e.Message; 

    switch (command) 
    { 
     case "SCAN": 
      e.Response = Scan(e.Message); //I need to send a response 
      break; 
     default: 
      e.Response = "NULL"; 
      break; 
    } 
} 

回答

0

這可能是你想要的...

messageReceiver.MessageReceived += (s, e) => 
    Task.Factory.StartNew(() => MessageReceiver_MessageReceived(s, e)); 

或使用線程...new Thread(() => MessageReceiver_MessageReceived(s, e)).Start();

+0

感謝,這解決了我的問題! – Adelson 2012-04-16 12:02:16