簡體   English   中英

隱藏表單時,Form.Invoke()無法運行,

[英]Form.Invoke() does not run when form is hidden,

如果我采用C#表單(WinForms)並使其不可見:

MyForm.Visible = false;

然后在我創建的單獨線程中; 執行以下代碼:

        this.Invoke(new MethodInvoker(delegate()
                                          {
                                              ProgressBar2.Visible = false;
                                          }));

我的應用程序將凍結,不會繼續。 如果MyForm是可見的,則線程中的上述代碼運行良好。 如果看不到,則代碼在讀取“ this.Invoke(new MethodInvoker(delegate()”)行后立即停止運行。不會出錯,它只是坐在那里(我設置了一個斷點來觀看它,只是坐在“ this.Invoke(new MethodInvoker(delegate()”))之后。

關於隱藏表單時為何不執行此操作的任何想法? 以及如何解決這個問題? 我正在使用“ this.Invoke(new MethodInvoker(delegate())”,因為我需要能夠在MainForm上將進度條控件設置為可見(並且我必須在除主UI線程之外的其他線程上執行此操作),我想要無論表單是否可見,都可以這樣做。

隱藏該窗體后,我相信消息泵將不再運行。 我確實知道Invoke機制要求消息泵正在運行。

您可能可以通過將不透明度設置為0而不是可見性來解決此問題,因為這有其自身的問題。

將表單包裝在元素中,然后設置其樣式=“ display:none;”。 將visible設置為false會導致該對象無法在客戶端代碼中呈現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM