0

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

我有一个 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。这工作正常但是......

似乎正在发生的是,线程在随机的时间间隔内停止执行——就好像它刚刚“消失”一样。我已经登录到屏幕和文件以尝试找到导致此问题的特定原因,但它几乎每次都会在其进程的不同部分停止。

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

更奇怪的是——这似乎不会发生在每个安装它的系统上,但确实发生在不只是奇怪的系统上。

没有任何捕获的错误要修复,也没有设定的代码区域来调查问题(因为正如我所说 - 它不一致)我完全不知道如何继续。

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

请帮忙 :)

4

1 回答 1

0

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

尝试将 [STAThread] 粘贴在 Main() 函数中,看看是否有帮助 - 让我知道你的进展情况。

于 2013-05-16T14:21:03.497 回答