2010-11-19 102 views
0

我有一个客户端服务器应用程序。客户登录我的服务器上的帐户。问题在于我的服务器有时会崩溃,虽然我用try-catch语句包装了所有类型,但我没有收到任何消息。客户端 - 服务器应用程序崩溃

我已经实现的服务器在这里:。

有没有人遇到这样的崩溃?有没有一个地方可以找到应用程序的错误日志?

我有点绝望,所以任何想法都会很棒。谢谢。

+0

顺便说一句,我访问来自多个线程的变量,而无需使用锁声明。这可能是坠机问题吗? – Alex 2010-11-19 08:15:24

+0

当你的服务器崩溃时,你会得到什么错误?在那里应该有一个堆栈跟踪,指向你的代码的一部分。一旦你发现,如果你自己没有发现问题,向我们展示导致问题的代码。 – 2010-11-19 08:19:43

+0

不,没有!太奇怪了!该程序只是崩溃!我正在寻找各种可能性。服务器代码不起作用,或者我编写的其他代码有问题 – Alex 2010-11-19 08:36:43

回答

2

由于多线程操作,即使您将所有函数包装在try-catch块中,应用程序也可能因未处理的异常而崩溃。

try 
{ 
    var t = new Thread(()=> 
     { 
      Thread.Sleep(5000); 
      throw new Exception(); 
     }); 
    t.Start(); 
    //t.Join(); 
} 
catch 
{ 
    //you can't deal with exception here 
    //even though you uncomment `t.Join` 
    //the application will crash even there is a try-catch wrapped 
} 
1

如果您在Visual Studio中以调试模式运行,则可以考虑启用CLR异常以传播到用户控制。我相信它们在默认情况下被禁用,这有时会导致挂起的应用程序没有任何调试器反馈。 This article on MSDN可能是有趣的。

2

您是否保留示例代码的这一部分? 添加Console.WriteLine权抓后...

catch 
    { 
     //a socket error has occured 
     break; 
    }