2012-10-24 7 views
1

Я хотел бы иметь асинхронное действие в базовом контроле MonoRail.Замок MonoRail async action

Я прочитал документацию об асинхронных действиях 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) аналогично тому, что описано в другой SO вопрос? (http://stackoverflow.com/questions/5037422/how-to-create-an-iasyncresult-that-immediately-completes) –

+0

Спасибо, это, вероятно, сработает. – ZxCvBnM

+0

Рад видеть, что это поможет вам, я сделаю это в ответ, чтобы люди могли ясно видеть это –

ответ

0

Вам нужно будет вернуть завершенный IAsyncResult (с нулевым значением AsyncResult).

Вы можете создать завершенный результат, похожий на тот, в this SO question

 Смежные вопросы

  • Нет связанных вопросов^_^