2014-10-03 107 views
0

返回我要實現在異步執行的方式,下面的函數,但仍返回布爾值,當它完成取決於結果如何從匿名方法

public bool Handler(JObject data, CefCallback callback) 
{ 
    Task.Factory.StartNew(async() => 
    { 
     return true; 
    }).Unwrap().ContinueWith(result => 
    { 
     return false; 
    }, TaskContinuationOptions.OnlyOnFaulted); 
} 
然而

我不知道如何從返回在匿名方法內

+0

你試過await/async嗎?這幾乎可以解決問題的完整性。 – BradleyDotNET 2014-10-03 19:05:39

+0

@BradleyDotNET我知道異步/等待,但不幸的是,我不能在這種情況下使用它...有關cefglue結構的東西。所以我必須解決異步處理請求,並仍舊使用異步/等待與我的舊功能。 – 2014-10-03 19:07:03

+0

這只是沒有意義。如果你正在處理其他簡單的代碼無法處理它,爲什麼要有異步代碼呢?保持全部同步。 – hvd 2014-10-03 19:09:53

回答

1

要使該功能異步,它將需要返回Task<bool>而不是bool。對於返回bool的方法意味着它需要在返回給調用者的時候計算結果。異步方法的字面定義是在返回其調用者之後計算其值的方法。

+0

我知道異步/等待,但不幸的是我不能在這種情況下使用它...有關cefglue結構的東西。所以我必須解決異步處理請求,並仍舊使用異步/等待與我的舊功能。 – 2014-10-03 19:08:01

+0

@DanielEugen你不需要使用'await',但是如果你希望這個方法是異步的,你需要返回一個Task。如果你必須返回一個'bool',那麼根據定義,這個方法就不可能是異步的。 – Servy 2014-10-03 19:10:27

+0

@Servery所以我沒有辦法返回或給調用者發送結果而不使用await?...並且不會阻塞 – 2014-10-03 19:11:50