我想從後臺線程(我認爲)打開窗體,因爲當我調用formName.Show();被凍結的形式(不是主要形式)。從後臺線程在UI線程上打開一個窗體
目標:
當用戶接收到新的消息時,彈出一個newMessageFrm具有用於答覆的新的消息。
問題:
新形式的鎖。
這裏是我使用的代碼:
static void OnNewMessage(object sender, S22.Xmpp.Im.MessageEventArgs e)
{
if(CheckIfFormIsOpen(e.Jid.ToString(), e.Message.ToString()) == true){
} else
{
newMessageFrm tempMsg = new newMessageFrm(e.Jid.ToString());
tempMsg._msgText = e.Jid.ToString() + ": " + e.Message.ToString();
tempMsg.frmId = e.Jid.ToString();
tempMsg.Show(); //This locks up the application
}
}
我使用Visual Studio 2015年,C#和S22.Xmpp(正如你可以從代碼中看到。)
當此事件觸發時,表單彈出,但隨後鎖定。
如果您需要更多信息,請讓我知道。
從主(UI)線程打開窗體。 –
使用您可訪問的任何控件/表單的Invoke或BeginInvoke。看看這個:http://stackoverflow.com/questions/6708765/how-to-invoke-when-i-have-no-control-available – Gusman
PLease不回答問題中的意見。經過一段時間的評論被刪除後,用戶也無法將評論標記爲答案 – Stralos