簡體   English   中英

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.

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