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);
}
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();
}
}