在窗體上,通過單擊按鈕啓動長時間運行的任務。該任務在單獨的工作線程上運行,並在任務運行時顯示帶有進度條的另一個表單。爲什麼主窗體消失?
當任務完成或取消時,否則顯示進度條的表單會關閉。虛擬代碼看起來是這樣的:
task.DoWorkAsync();
progressBar.Show(parent);
而當任務完成後
progressBar.Close();
但有時在顯示進度條的形式被關閉的那一刻準確,主要形式被切換到後臺。更準確地說,是我必須做的重現該問題:
- 開始我的應用程序上的另一個窗口
- 點擊(另一個應用程序的,比方說,Excel)中,以把它前面
- 點擊我的應用程序窗口(將其帶到前方)
- 運行
現在的進度條得到了關閉後,我的應用程序窗口背後的另一個我帶到前前(這裏Excel)中消失的任務。
當然我上面描述的是我的應用程序非常粗略的輪廓。但我需要的是在進度條關閉時找出爲什麼我的表單消失。
很奇怪,但活下來的主要形式的線程? –
您正在做某些事情來使主窗口無法訪問。你忘了提到這一點,但這會導致問題。 –
嗨漢斯和福克斯,是的,正確的。我忘了提到這一點。主UI線程保持活動狀態,禁用主窗口以使其無法訪問。我會盡量不要禁用它,然後看看會發生什麼。 – Michael