2012-10-24 43 views
1

我想在MonoRail基礎控制器中執行異步操作。Castle MonoRail異步動作

我讀到的異步操作 http://docs.castleproject.org/Default.aspx?Page=Controllers&NS=MonoRail&AspxAutoDetectCookieSupport=1#Asynchronous_Actions_1

文檔所以這是我做過什麼:

public IAsyncResult BeginUploadTags(HttpPostedFile xmlFile, Boolean doUpload) 
{ 
    if(IsPost) 
    { 
      IAsyncResult iAsyncResult = new AsyncDelegate(upload).BeginInvoke(queryResult, doUpload, ControllerContext.Async.Callback, ControllerContext.Async.State); 
      return iAsyncResult; 
    } 
    // TODO 
    // if IsPost is false do nothing but return a IAsyncResult object 
} 

public void EndUploadTags() 
{ 

} 

private delegate void AsyncDelegate(List<String> queryResult, Boolean doUpload); 
private void upload(List<String> queryResult, Boolean doUpload) 
{ 
    // do upload stuff 
} 

但我需要做的,當IsPost是假的呢?

+0

你可以簡單地返回一個完成的IAsyncResult(用空AsyncResult)類似於在其他描述,質疑一個完成的結果? (http://stackoverflow.com/questions/5037422/how-to-create-an-iasyncresult-that-immediately-completes) –

+0

謝謝,這可能會工作。 – ZxCvBnM

+0

很高興看到這對您有所幫助,我會將其作爲答案,以便人們也能清楚地看到它 –

回答

0

您需要返回一個完整的IAsyncResult(帶有一個空的AsyncResult值)。

您可以創建一個類似於在this SO question