2016-03-18 31 views

cevap

3

Evet doğrudan yöntemin çağrı sonrasında Result özelliğini kullanarak bunu yapabilirsiniz:

var result = Task.Run(() => { 

    return someClass.myAsyncMethod(someParameter); 

}).Result; 
:

var result = someClass.myAsyncMethod(someParameter).Result; 

ve daha iyi bir yol gibi kilitlenmeleri önlemek için Task.Run() onu sarmak için ise

Ayrıca MSDN üzerinde bu RunSynchronously() method bulundu, ancak bu liner basit bir kod istediğiniz gibi sorunuzu sunucu olmaz.

+0

İşte tamamlanması için çalışmaya devam edecek mi? – Alexandru

+0

görev tamamlanıncaya kadar arayanın iş parçacığını engelleyecektir –

+1

@ EʜsᴀɴSᴀᴊᴊᴀᴅ: 'Task.Run() 'için sözdiziminin ne olduğunu gösterebilir misiniz? –

1

Kendinizi sıklıkla kullanabileceğiniz küçük bir uzantısı Sonra

public static class TaskExtensions 
{ 
    public static T SyncResult<T>(this Task<T> task) 
    { 
     task.RunSynchronously(); 
     return task.Result; 
    } 
} 

yazabilir bunu yaparken bulursanız:

var result = Task.SyncResult(); 
İlgili konular