Şu an için 3.5 konumunda kaldım, ancak asyncbridge'i async-bekleme için kullanıyoruz. Eski WCF async çağrılarını kullanıyoruz ve bunu yeni async-bekle desenine sarmak istiyorum.WCF 3.5, AsyncBridge. Eşzamanlı olarak bekle
// async is wrong
public /*async*/ Task<ScannedDocumentResult> GetScannedDocumentsTask(String assignmentId)
{
TaskCompletionSource<ScannedDocumentResult> tcs = new TaskCompletionSource<ScannedDocumentResult>();
EventHandler<GetScannedDocumentsCompletedEventArgs> handler = null;
handler = (o, e) =>
{
if (e.UserState != tcs)
return;
if (e.Error != null)
tcs.SetException(e.Error);
else if (e.Cancelled)
tcs.SetCanceled();
else
tcs.SetResult(e.Result);
GetScannedDocumentsCompleted -= handler;
};
GetScannedDocumentsCompleted += handler;
GetScannedDocumentsAsync(assignmentId, tcs);
return tcs.Task;
}
3,5 WCF vekaleten genereted şunlardır::
şey söylüyor
GetScannedDocumentsAsync GetScannedDocumentsCompleted GetScannedDocumentsEventArgs bu yapılabileceğini şöyle
Bunu sarma ediyorum çok temizleyici, bir şeyleri özledim mi?
Ayrıca, bu yöntem hiç bir zaman uyumsuz yürütecek mi? Async operatörü ile derleme sadece bir hata üretir.
'GetScannedDocumentsAsync' IAsyncResult'u döndürüyor mu? Eğer öyleyse, [bu] (http://blogs.msdn.com/b/pfxteam/archive/2011/06/27/10179452.aspx) mükemmel blog yazısı nasıl doğru yapacağını açıklar. – Noseratio
'async' yalnızca içlerinde' beklemiş 'yöntemlerde kullanılabilir. GetScannedDocumentsAsync' nedir? –
Async'in bir zamanlamanın asenkronize olarak yürütülmesi için gerekli olduğunu düşünüyorsanız, async'in ne anlama geldiğini gerçekten anlamıyorsunuz demektir. Muhtemelen daha fazla okumalısın. – svick