0
當我執行第二次同樣的方法時,我有可怕的現象。我沒有得到WPF屏幕,我不知道爲什麼? 參考我的代碼當你第二次點擊時什麼也沒有發生
TestWindow按鈕點擊方法(這是Windows應用程序項目型)和我在我的
Main()方法去除STA線程
TestClass test;
private void button1_Click(object sender, EventArgs e)
{
test =TestClass.Instance; //singleton pattern
test.ShowScreen();
}
TestClass
public void ShowScreen()
{
var thread = new Thread(() =>
{
Explorer explorer = new Explorer();
explorer.Show();
explorer.Closed += (s, args) =>
explorer.Dispatcher.InvokeShutdown();
System.Windows.Threading.Dispatcher.Run();
});
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
}
上面的代碼工作正常,當我第一次運行。我可以查看我的資源管理器屏幕。 但問題是,當我第一次關閉屏幕,並再次調用相同的方法(test.ShowScreen();)沒有表現出
注意瀏覽器屏幕:我注意到如果我不關閉第一窗口(實例)然後我可以打開許多資源管理器屏幕。使用相同的代碼。 如果我關閉第一個窗口(實例),我無法打開資源管理器屏幕,我沒有收到任何錯誤消息。
以下行看來的'TestClass'不恰當關閉的實例。你爲什麼編碼相同? –
我使用的TestClass **單例模式**,真正的代碼像這樣'testObj = TestClass.Instance;' –
這就是它看起來的問題,讀了這個[單例是一個類,它只允許一個單獨的實例被創建,並且通常可以簡單地訪問該實例。最常見的情況是,創建實例時,單例不允許指定任何參數 - 否則,對於實例的第二個請求,但使用不同的參數可能會產生問題! (如果所有具有相同參數的請求都應該訪問同一個實例,工廠模式更適合。)](http://csharpindepth.com/Articles/General/Singleton.aspx) –