2012-10-24 42 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