假设我有两个创建Task对象的独立异步函数(我无法控制):
Task A();
Task B();
Run Code Online (Sandbox Code Playgroud)
和其他一些非异步功能
void X();
Run Code Online (Sandbox Code Playgroud)
如何构建一个单独的任务链,按顺序执行所有这些,并允许附加继续(将在X之后执行)?
如果我这样做:
Task Sequential()
{
return A()
.ContinueWith(t => { B(); })
.ContinueWith(t => { X(); });
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为B将启动一个新的任务链.如果B需要很长时间才能完成,则首先执行X(以及在返回的Task上,Sequential的调用者可能会继续执行任何其他操作).我需要X作为单个任务链中的最后一个元素,以B任务为先例.
如果我这样做:
Task Sequential()
{
return A()
.ContinueWith(t => { B().ContinueWith(t => { X(); }); });
}
Run Code Online (Sandbox Code Playgroud)
这只能部分解决问题,因为即使A,B和X现在按顺序执行,如果调用者执行Sequential().ContinueWith,该延续将并行执行到B和X,而不是X.
我试图找到用于压缩电影的编解码器.我确定我是否需要以某种方式使用CMFormatDescription并获取CMVideoCodecType密钥.我被困在如何通过元数据数组.关于如何检索编解码器的任何想法?
AVURLAsset* movieAsset = [AVURLAsset URLAssetWithURL:sourceMovieURL options:nil];
NSArray *tracks = [movieAsset tracksWithMediaType:AVMediaTypeVideo];
if ([tracks count] != 0) {
AVAssetTrack *videoTrack = [tracks objectAtIndex:0];
//
// Let's get the movie's meta data
//
// Find the codec
NSArray *metadata = [movieAsset commonMetadata];
}
Run Code Online (Sandbox Code Playgroud) 我想从通用 Windows Phone 应用程序中的 JSON 文件进行解析,但我无法将任务转换为字符串
public MainPage()
{
this.InitializeComponent();
HttpClient httpClient = new HttpClient();
String responseLine;
JObject o;
try
{
string responseBodyAsText;
HttpResponseMessage response = httpClient.GetAsync("http://localhost/list.php").Result;
//response = await client.PostAsync(url, new FormUrlEncodedContent(values));
response.EnsureSuccessStatusCode();
responseBodyAsText = response.Content.ReadAsStringAsync().Result;
// responseLine = responseBodyAsText;
string Website = "http://localhost/list.php";
Task<string> datatask = httpClient.GetStringAsync(new Uri(string.Format(Website, DateTime.UtcNow.Ticks)));
string data = await datatask;
o = JObject.Parse(data);
Debug.WriteLine("firstname:" + o["id"][0]);
}
catch (HttpRequestException hre)
{
}
Run Code Online (Sandbox Code Playgroud)
我在这一行有错误
string data = await datatask;
Run Code Online (Sandbox Code Playgroud)
我该如何解决?