2010-06-02 48 views
1

我有一段代码,我通过tcp/ip通道发送文件内容。有时,此连接挂起导致整个应用程序冻结。有没有办法让我的主线程产生一个工作线程并监视那个工作线程。如果工作者线程成功,那就很好。如果它挂起,主线程可能会记录错误消息并继续。如何在我的测试代码中模拟工作线程是挂起。请让我知道代码的样子。我正在使用C#Visual Studio 2002.Visual Studio 2002:通过TCP/IP发送文件时C#发生冻结

+0

Visual Studio 2002? – Aren 2010-06-02 16:54:24

+0

@Aren B:这将是Visual Studio .NET,使用.NET 1.0。微软试图假装的版本不存在。 – Powerlord 2010-06-02 16:57:26

+0

@R。 Bemrose:我猜1.1到2003年的前奏? – Aren 2010-06-02 17:46:16

回答

3

当然,这是可能的。

要么使用BackgroudWorker或Thread类手动实现线程,要么使用异步方法发送内容(在您的情况下更简单)。

所有与网络相关的类都包含其操作的异步方法。寻找包含AsyncBegin的方法...

而模拟死线程很简单。只是做一个无限循环:

while (true) 
    System.Threading.Thread.Sleep (10); 
+0

我可以得到一个示例代码吗?谢谢 – 2010-06-02 16:40:07

+0

由于有几个可以使用的类,因此在显示目前的内容之前,没有人可以给出代码示例。在最简单的情况下(例如使用WebClient,您可以注册OnDownloadDataCompleted和可能的OnDownloadProgressChanged事件,然后调用webClient.DownloadDataAsync(uri)。 – Foxfire 2010-06-02 16:46:17