如何在异步函数c#UWP的末尾启动函数
我在c#UWP中有一个简单的代码,其中使用Windows.Media.SpeechSynthesis类,应用程序合成第一个字符串,我的问题是在第一个合成完成后合成第二个字符串。我知道只生成包含str1+str2的字符串是可能的,但运行此代码的场景更复杂,这是不可能的。(对不起,我的英语水平低)如何在异步函数c#UWP的末尾启动函数,c#,uwp,text-to-speech,C#,Uwp,Text To Speech,我在c#UWP中有一个简单的代码,其中使用Windows.Media.SpeechSynthesis类,应用程序合成第一个字符串,我的问题是在第一个合成完成后合成第二个字符串。我知道只生成包含str1+str2的字符串是可能的,但运行此代码的场景更复杂,这是不可能的。(对不起,我的英语水平低) 和往常一样,使用async方法返回void而不是Task或Task是个坏主意 返回任务时,只需添加一个带有以下内容的延续: 和往常一样,使用async方法返回void而不是Task或Task是个坏主意 返
和往常一样,使用
async
方法返回void
而不是Task
或Task
是个坏主意返回
任务时
,只需添加一个带有以下内容的延续:
和往常一样,使用
async
方法返回void
而不是Task
或Task
是个坏主意返回
任务时
,只需添加一个带有以下内容的延续:
使方法
talk
返回Task
而不是void
public MainPage()
{
this.InitializeComponent();
MakeTalk();
}
private async void MakeTalk()
{
// Surround by a try catch as we have async void.
string str1 = "weather data";
await talk(Textmeteo);
string str2 = "hello world";
await talk(str2);
}
public async Task talk(string text)
{
// [...]
}
使方法
talk
返回Task
而不是void
public MainPage()
{
this.InitializeComponent();
MakeTalk();
}
private async void MakeTalk()
{
// Surround by a try catch as we have async void.
string str1 = "weather data";
await talk(Textmeteo);
string str2 = "hello world";
await talk(str2);
}
public async Task talk(string text)
{
// [...]
}
请问如何使用:talkingTask=talkingTask.ContinueWith(completedTask=>talk(str2))@我就是这样。您的
async talk
方法返回一个Task
(这是由编译器完成的),并且ContinueWith
告诉它在上一个操作完成后开始下一个操作(参数)。因此,如果有10个字符串,那么ContinueWith
应该重复10次?@AVK yes,或者可以这样做,这实际上(相当)是相同的。我高度怀疑波尔克杜兰的答案是否适用于这种情况。答案虽然在等待函数,但不希望作为任务返回任何值,因此它将跳转到下一行执行,并与字符串重叠。你的答案应该有用。请问如何使用:talkingTask=talkingTask.ContinueWith(completedTask=>talk(str2))@我就是这样。您的async talk
方法返回一个Task
(这是由编译器完成的),并且ContinueWith
告诉它在上一个操作完成后开始下一个操作(参数)。因此,如果有10个字符串,那么ContinueWith
应该重复10次?@AVK yes,或者可以这样做,这实际上(相当)是相同的。我高度怀疑波尔克杜兰的答案是否适用于这种情况。答案虽然在等待函数,但不希望作为任务返回任何值,因此它将跳转到下一行执行,并与字符串重叠。您的答案应该有效。为什么在您的场景中不可能使用str1+str2
?@AVK,因为在第一个场景中,当str1被合成时,一个函数运行http请求以联机读取构成str2的数据。在第二个场景中,我需要一个数据,您指向第一个合成的结尾,因此我开始语音识别。为什么在您的场景中,str1+str2
不可能?@AVK,因为在第一个场景中,当str1合成时,一个函数运行http请求来在线读取构成str2的数据。在第二个场景中,我需要一个数据,您可以指向第一次合成的末尾,这样我就开始语音识别。
public MainPage()
{
this.InitializeComponent();
MakeTalk();
}
private async void MakeTalk()
{
// Surround by a try catch as we have async void.
string str1 = "weather data";
await talk(Textmeteo);
string str2 = "hello world";
await talk(str2);
}
public async Task talk(string text)
{
// [...]
}