[英]How do you set a component property from within a thread without throwing an error in C# .NET?
[英]Forked thread in C# .net App dies inexplicably and without throwing any errors
首先,很抱歉,如果這是一個模糊的問題,很難解釋,也很奇怪,這似乎也不是一個特別具體的問題。 但我會盡力在這里解釋一下:
我有一個C#.net應用程序,該應用程序派生了一個新線程來完成大部分工作-主線程僅處理GUI前端。
syncThread = new Thread(new ThreadStart(syncClass.sync));
同步線程不斷循環...
public void sync()
{
while (true)
{
do stuff
最后,要有睡眠來阻止它一直占用CPU。
System.Threading.Thread.Sleep(sync_interval);
為了填充一些背景知識,它在“做事”中的工作是使用Sages API連接到Sage,並連接到SOAP服務,並且基本上是從Sage中提取數據並推送到SOAP。 這很好,但是...
似乎正在發生的事情是,線程以隨機的間隔停止執行-好像它已經“消失了”。 我已登錄到屏幕和文件以嘗試查找引起這種情況的特定原因,但是幾乎每次都在過程的不同部分停止它。
我嘗試捕獲錯誤並將它們記錄到屏幕和文件中,以及將代碼執行進度記錄到文件中-但是,當發生這種情況時-它根本不會引發錯誤(或者如果發生錯誤,我將無法捕獲)。 所以我完全被困住了。
更奇怪的是,這似乎並沒有在安裝的每個系統上發生,但確實發生在不只是奇數系統上。
沒有任何捕獲到的錯誤可修復,也沒有固定的代碼區域可用來研究問題(因為我說過-不一致),我完全困惑如何進行。
那么-是否有任何人知道的常規線程問題會導致這種行為? 首先,有沒有一種更好的方法可以使我着手進行線程處理,或者任何人都可以就如何查找和捕獲錯誤提供任何進一步的建議,以便我可以對其進行修復?
請幫忙 :)
如果您通過SDO與Sage 50交談,它是一個COM接口,並且在單線程單元(STA)中運行,那么我99%的確定您的應用程序也必須以STA模式運行-我們的應用程序將以STA身份運行如果我還記得的話,我們只線程UI元素。
嘗試將[STAThread]粘貼到Main()函數中,看看是否有幫助-讓我知道您的情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.