【发布时间】:2016-01-11 22:08:17
【问题描述】:
考虑我正在使用线程,它在 Windows::Storage::Streams::DataReader (m_reader) 的帮助下从网络套接字 (Windows::Networking::Sockets::StreamSocket) 读取数据流。我需要停止这个线程,它主要在 LoadAsync 中等待。超时后如何正确取消 LoadAsync 方法?
auto t1 = create_task(m_reader->LoadAsync(sizeof(len)));
t1.wait();
我尝试了几种方法,但没有一个能正常工作。或者我不能使用 DataReader,我必须选择其他方法?
【问题讨论】:
-
关闭套接字即可。不可避免地,这也必须也将结束 LoadAsync()。如果套接字由于某种原因需要生存,请使用 CancelIOAsync()。
-
我现在这样做了,但它会抛出一些该死的异常:Platform::COMException ^ at memory location 0x1242EB18。 HRESULT:0x800703E3。我想知道是否有更清洁的方法没有这个例外......
标签: multithreading windows-store-apps c++-cx