【发布时间】:2018-02-05 13:16:39
【问题描述】:
我是多线程新手,我有一个(可能)关于同时使用线程和等待/异步的简单问题。我有一个方法可以读取 TCP 流,然后处理它收到的响应。它的调用方式如下所示:
ThreadStart ts = new ThreadStart(ReadTCP);
Thread tt = new Thread(ts);
从流中异步读取数据是否可行?就像在这段代码中一样:
private async void ReadTCP()
{
string responseData = string.Empty;
if(streamTCP.DataAvailable)
{
responseData = await readerTCP.ReadToEndAsync();
// some code handling the response
}
}
使用MarioDS's help编辑的代码
【问题讨论】:
-
我不认为你的 streamTCP 是线程安全的。此代码会以某种方式失败。
-
我还没锁,但我知道怎么做。
-
锁定可能会使您尝试执行的任何线程无效。
-
这是关于异步 I/O 的。你不需要线程。你不想要线程。你当然不应该使用
async void方法。
标签: c# .net multithreading stream