我正在使用接收端的TcpListener和发送端的TcpClient编程简单的TCP文件传输。我有2个选项 - 同步或异步。如果我使用同步,我必须将发送/接收方法放入BackgroundWorker,以防止冻结GUI线程。异步版本没有问题...C#停止TCP文件传输
我的问题是,如何停止运行文件传输?
在synchronnous版本我试图用BackgroundWorker.CancelAsync()方法,并在每次循环检查BackgroundWorker.CancellationPending属性,但它似乎并不工作(CancelAsync可能是不设置CancellationPending属性):(
在异步版本中,我尝试使用volatile变量Indicator,并在每个Callback中检查其值。问题是,当我在Stop()方法中更改其值时,并且我在Callback中检查它,回调仍然读取其先前值:(
volatile应该可以工作,但是您需要确保两个线程都指向相同的变量而不是两个不同的实例。也许你应该向我们展示代码。 – 2010-01-24 20:59:37