如何在C#窗體控件中實時顯示命令輸出?
本文演示如何使用C#代碼實時顯示命令輸出到用戶界面控件中。代碼使用基於委託的方法異步處理命令的輸出,從而允許用戶界面控件實時更新。
C#代碼示例:
以下C#代碼片段演示了該任務:
<code class="language-csharp">// ... (为简洁起见省略的代码 - 请参阅参考以了解完整上下文) // 创建字符串处理程序 var prc = new Exec.OutputHandler((string line) => { if (txt.InvokeRequired) txt.Invoke(new MethodInvoker(() => { txt.Text += line + Environment.NewLine; // 添加换行符 })); else txt.Text += line + Environment.NewLine; // 添加换行符 }); // ... (为简洁起见省略的代码 - 请参阅参考以了解完整上下文)</code>
說明:
事件處理程序: 定義OutputHandler
委託來處理命令的輸出。它接受一個字符串參數,表示一行輸出。
異步輸出處理: Exec
類提供了一種異步輸出處理機制,允許代碼即使在命令仍在生成輸出時也能繼續執行。這使得用戶界面能夠實時更新。
與UI線程同步: 由於OutputHandler
委託是異步調用的,它可能不會在與UI控件相同的線程上執行。為了以線程安全的方式更新TextBox,會檢查InvokeRequired
屬性。如果InvokeRequired
為true,則表示該線程不是UI線程,因此使用Invoke
方法在UI線程上執行MethodInvoker
委託。
更新TextBox: 在MethodInvoker
委託中,輸出行附加到TextBox。這樣,輸出就會在TextBox中實時顯示。 添加了Environment.NewLine
確保輸出換行,提高可讀性。
附加說明:
txt
,並且位於窗體上。 Exec
類是一個自定義類,提供異步執行命令和處理其輸出的方法。 完整代碼參考:
完整的代碼上下文和細節可以在文章中提出的原始問題中找到:(此處應插入原始文章鏈接,如果可用)
This revised answer improves clarity, adds a newline character (Environment.NewLine
) for better readability of the output in the textbox, and maintains the image. It also emphasizes the asynchronous nature of the operation and the importance of thread safety.
以上是如何在C#表單控件中顯示實時命令輸出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!