C#.net应用程序中的分叉线程莫名其妙地死亡,没有丢失任何错误

时间:2013-05-16 10:03:36

标签: c# .net soap sage-line-50

首先,如果这是一个非常模糊的问题,我很抱歉,很难解释并且非常奇怪,而且它似乎也不是特别具体的问题。但我会尽力在这里解释一下:

我有一个C#.net应用程序,它会使一个新线程完成大部分工作 - 主线程只处理GUI前端。

syncThread = new Thread(new ThreadStart(syncClass.sync));

同步线程不断循环......

public void sync()
    {

        while (true)
        {
           do stuff

最后,有一个睡眠来阻止它一直占用CPU ......

System.Threading.Thread.Sleep(sync_interval);

为了填补一些背景知识,它在“do stuff”中的作用是使用Sages API连接到Sage,并连接到SOAP服务,基本上从Sage提取数据并推送到SOAP。这样可以正常工作......

似乎正在发生的事情是,随机间隔线程就会停止执行 - 就像它刚刚“消失”一样。我已经登录到屏幕和文件,试图找到一个特定的原因,但它几乎每次都停在它的过程的不同部分。

我已经尝试捕获错误并将这些错误记录到屏幕和文件以及将代码执行进度记录到文件中 - 但是当发生这种情况时 - 它只是不会抛出错误(或者如果确实如此,我无法捕获它)。所以我完全卡住了。

为了增加奇怪性 - 这似乎不会发生在它安装的每个系统上,但确实发生在不仅仅是奇怪的系统上。

没有任何捕获的错误需要修复,并且没有设置代码区域来调查问题(因为正如我所说 - 它不一致)我完全难以理解如何继续。

那么 - 有没有人知道可能导致这种行为的一般线程问题?有没有更好的方法让我首先进行线程处理,或者任何人都可以提供有关如何查找和捕获错误的任何进一步建议,以便我可以修复它?

请帮助:)

1 个答案:

答案 0 :(得分:0)

如果您通过SDO与Sage 50交谈它是一个COM接口并且它运行在单线程公寓(STA)中,我99%确定您的应用程序也必须在STA模式下运行 - 我们的应用程序运行为作为STA,如果我记得我们只是线程化UI元素。

尝试在Main()函数中粘贴[STAThread]并查看是否有帮助 - 让我知道你是如何继续的。