簡體   English   中英

檢測C#庫中主線程的運行情況

[英]Detecting running in Main Thread in C# library

我正在創建一個C#dll,它將被WinForms中的其他開發人員使用。 出於某些原因,我想檢測,如果來自此庫的方法是從Main(GUI)線程調用的,並警告開發人員他已經完成了這樣的事情(即在日志文件中)。 有沒有合理的方法從主線程中檢測調用方法? 請記住,我無權訪問WinForm應用程序。

在這種情況下,一個簡單的解決方案是在主UI線程上創建的庫程序集中聲明靜態控件。 如果要檢測是否從主線程調用庫,請使用以下命令

if (MyLibraryControl.InvokeRequired)
  //do your thing here

最簡單的選項(如果你有一個表單/控件方便)是檢查InvokeRequired。

如果沒有,你可以嘗試使用SynchronizationContext來模擬Post或Send,檢查發生了什么線程? 調用Send或Post將切換到UI線程。

暫無
暫無

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

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