IAsyncOperation未完成,但返回“已完成”状态

时间:2019-12-02 14:33:28

标签: c++ c++-winrt c++-coroutine

我正在尝试使用以下代码行(在C ++中)

SpeechSynthesisStream speechStream = co_await synth.SynthesizeTextToStreamAsync(wtext);

从主线程调用时,此代码可以正常工作。

但是,当我尝试从其他线程调用它时,它永远不会完成。

我有最奇怪的行为,如果我这样做的话:

auto streamOp = synth.SynthesizeTextToStreamAsync(wtext);
while (true)
{
    if(streamOp.Status()==winrt::Windows::Foundation::AsyncStatus::Completed)
    {
            //here
            break;
    }
}

我确实到达了“此处”,在这种情况下

SpeechSynthesisStream speechStream = streamOp.GetResults()

似乎有效。

这种行为可能是什么原因?

PS:如果我使用WinRT线程系统(“ co_await”和“ resume_background”),而不是我自己的线程系统,则代码可以正常工作并完成。

谢谢

0 个答案:

没有答案