NSOperationQueue 实现单点触控

本文关键字:单点触 实现 NSOperationQueue | 更新日期: 2023-09-27 18:32:44

我正在使用NSOperationQueue在后台上传图像,当图像上传时,它会返回url和我们用于保存数据的此图像URL。我正在使用此代码,但它不会等到第一个操作执行的 URL 获取。

我希望 postScrap 不会执行,除非并且直到 PostScrapPicture 方法不会执行execute,我正在使用 OperationQueue.WaitUntilAllOperationsAreDone();为此,它没有执行。

第一次操作:

Action asyncUploadAction = () => {                  
    OperationQueue.AddOperation(()=>{
    PostScrapPicture (ownerUserId,scrapImage,serviceSuccessAction, serviceErrorAction);} );                         
}  ;    

第二次操作:

if (OperationQueue!=null) {
    OperationQueue.WaitUntilAllOperationsAreFinished();
    if (!String.IsNullOrEmpty (scrapbook.Picture.Url))
        PostScrap (scrapbook, serviceSuccessCallback, erviceErrorCallback);
    else
        errorAction (true);                                             
}  

NSOperationQueue 实现单点触控

Xamarin.IOS(Monotouch)包括对.Net强大的任务基础结构的内置支持,包括C# 5.0异步/等待支持。就我个人而言,我不会为这样的事情而打扰NSOperationQueue。我在下面提供了一个示例。这将调用一个 Web 服务,该服务使用字符串 url 响应上传。

public async Task<string> UploadImageData(byte[] imageData)
{
  var clientHandler = new HttpClientHandler();
  using (var client = new HttpClient(clientHandler))
  {
    var content = new ByteArrayContent(imageData);
    var response = await client.PostAsync(new Uri("http://example.com/postImage"), content);
    return await response.Content.ReadAsStringAsync();
  }
}