考慮到我正在使用線程,它使用Windows :: Storage :: Streams :: DataReader(Windows :: Networking :: Sockets :: StreamSocket)從網絡套接字(Windows :: Networking :: Sockets :: StreamSocket)讀取數據流m_reader)。我需要停止這個線程,它主要在LoadAsync中等待。如何在一些超時後正確取消LoadAsync方法?在某些超時後如何正確取消LoadAsync
auto t1 = create_task(m_reader->LoadAsync(sizeof(len)));
t1.wait();
我嘗試了幾種方法,但都沒有正常工作。或者我不能使用DataReader,我必須選擇其他方法?
只需關閉插座。不可避免的是,必須並將結束LoadAsync()。如果套接字因某種原因需要存活,則使用CancelIOAsync()。 –
我現在這樣做,但它會引發一些血腥的異常:Platform :: COMException ^在內存位置0x1242EB18。 HRESULT:0x800703E3。我想知道是否有一個更清潔的方式沒有這個例外... – wallycz