myproject.vshost.exe中发生未处理的异常

时间:2013-10-10 06:55:43

标签: c# unhandled-exception

我正在使用第三方dll创建一个Windows应用程序。他们已经提供了一些预定义的方法。有一个方法SetTag()用于更新值。现在我的工作是从tcp客户端获取数据并发送到此方法。我的tcp部分运行良好,我测试过它。问题发生在我致电SetTag()时。它运行良好一段时间,但一段时间后,它显示即时调试器弹出窗口,异常

  

myproject.vshost.exe

中发生了未处理的异常

我不明白这个例外发生在哪里。

每当我从tcp客户端获取数据时,都会调用UpdateValues(),调用第三方SetTag()

// valuesInArray is an object array which contain
// the data from tcp client after converted to object
UpdateValues(valuesInArray); 

和方法:

public void UpdateValues(object[] values)
{
    this.BeginUpdate();
    for (int i = 0; i < 9; i++)
    {
        this.SetTag(TagHandle[i], (values[i]), Quality.Good, FileTime.UtcNow);
    }
    this.EndUpdate(false);
}

我创建了一个模拟器,其中的数据不是来自tcp客户端,而是在计时器tick事件中发送数据。在这种情况下,没有发生错误,程序运行顺利。你能说一下为什么使用tcp客户端发生这个错误以及我如何摆脱它?

2 个答案:

答案 0 :(得分:0)

您没有提供足够的详细信息来解释错误是什么。但是,您的代码将受益于使用try {} catch {}来“处理”异常。例外情况包含您要查找的详细信息。

public void UpdateValues(

object[] values)
{
    this.BeginUpdate();
    for (int i = 0; i < 9; i++)
    {
        try
        {
            this.SetTag(TagHandle[i], (values[i]), Quality.Good, FileTime.UtcNow);
        }
        catch (Exception e)
        {
            // Log or print out the details
            Console.WriteLine("Error occurred setting the value.");
            Console.WriteLine(e);
        }
    }
    this.EndUpdate(false);
}

在此示例中,异常消息和堆栈跟踪将打印到控制台。查看此输出中的异常原因。

答案 1 :(得分:0)

在.NET 4及更高版本中,您需要使用UpdateValuesHandleProcessCorruptedStateExceptionsAttribute标记包含方法(SecurityCriticalAttribute)以捕获一些特殊异常,例如AccessViolationException