Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何判断进程挂起是否是由于缓冲区(TCP、stdin、stdout)已满所致?_C#_Process_Stream_Deadlock - Fatal编程技术网

C# 如何判断进程挂起是否是由于缓冲区(TCP、stdin、stdout)已满所致?

C# 如何判断进程挂起是否是由于缓冲区(TCP、stdin、stdout)已满所致?,c#,process,stream,deadlock,C#,Process,Stream,Deadlock,我有一个C#应用程序,它在一个单独的进程中启动一个控制台应用程序。这两个应用程序通过TCP连接以及一些(有限的)标准输入/输出进行通信。我遇到的问题是,每当我在调试器中“中断”时,似乎都会导致控制台应用程序挂起。如果我不使用这些应用程序,它们都可以正常工作,而且它们之间的交互似乎没有问题 到目前为止,我的研究似乎表明,由于输出缓冲区被填满,我可能遇到了死锁情况。我怎样才能证实情况确实如此?对于导致此问题的原因还有其他解释吗?如果您怀疑某个调用在某处被阻塞,您可以尝试查看是否存在异步版本(带有回调

我有一个C#应用程序,它在一个单独的进程中启动一个控制台应用程序。这两个应用程序通过TCP连接以及一些(有限的)标准输入/输出进行通信。我遇到的问题是,每当我在调试器中“中断”时,似乎都会导致控制台应用程序挂起。如果我不使用这些应用程序,它们都可以正常工作,而且它们之间的交互似乎没有问题


到目前为止,我的研究似乎表明,由于输出缓冲区被填满,我可能遇到了死锁情况。我怎样才能证实情况确实如此?对于导致此问题的原因还有其他解释吗?

如果您怀疑某个调用在某处被阻塞,您可以尝试查看是否存在异步版本(带有回调);或者,在线程内手动启动它,然后让主线程在循环中休眠,直到超时;如果在此之前无法完成,则抛出一个异常。

在可以(轻松)执行异步操作的地方执行异步操作似乎已经解决了该问题。