小编Kir*_*kiy的帖子

如何链接独立的C#任务?

假设我有两个创建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.

c# task-parallel-library

6
推荐指数
2
解决办法
1370
查看次数

在iOS下检索电影编解码器?

我试图找到用于压缩电影的编解码器.我确定我是否需要以某种方式使用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)

video codec ios

5
推荐指数
2
解决办法
2612
查看次数

将任务<字符串> 转换为字符串

我想从通用 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)

我该如何解决?

c# async-await win-universal-app

5
推荐指数
2
解决办法
2万
查看次数