2009-11-27 84 views
0

目前MS已經發布asp.net MVC 2.0測試版與AsyncController的,但很少有文件,在對這次除了一個文件:http://msdn.microsoft.com/en-us/library/ee728598(VS.100).aspx異步控制器asp.net的MVC 2.0

微軟展示的例子在製作AsyncController的過程中使用了一個事件。

但是,也有像我這樣的人,他們沒有使用任何事件來使用Decrement並希望將控制器從Sync遷移到Async ...所以有什麼辦法可以解決這個問題嗎?

例如,我有:

Image orgImage = _db.getImagebyGUID(guid); 
string date = orgImage.CREATE_DATE.toString(); 
Image newImage = _db.getImagebyGUID(guid2); 
string date2 = newImage .CREATE_DATE.toString(); 

有使用異步事件沒有因爲有很多很多沒有實現的事件回調類的任何可能的方式...

非常感謝你多

回答

1

你總是可以把這個代碼放到一個方法,創建委託給此方法和異步調用它:

public string DoWork() 
{ 
    Image orgImage = _db.getImagebyGUID(guid); 
    string date = orgImage.CREATE_DATE.toString(); 
    Image newImage = _db.getImagebyGUID(guid2); 
    string date2 = newImage .CREATE_DATE.toString(); 
    return date + date2; 
} 

而且調用代碼:

AsyncManager.OutstandingOperations.Increment(); 
Func<string> doWorkHandler = DoWork; 
doWorkHandler.BeginInvoke(ar => 
{ 
    var handler = (Func<string>)ar.AsyncState; 
    AsyncManager.Parameters["date"] = handler.EndInvoke(ar); 
    AsyncManager.OutstandingOperations.Decrement(); 
}, doWorkHandler); 
+0

當我試圖帕拉姆添加到DoWork的功能,它是行不通的,這是爲什麼呢?我需要將至少一個模型傳遞給該函數,因爲它粘在一起 – DucDigital 2009-11-27 10:33:49

+0

不能將類型'System.Drawing.Image'隱式轉換爲System.Func ' – DucDigital 2009-11-27 10:34:28

+0

這不是一個很好的候選者一個異步操作,因爲它仍在使用ASP.NET線程池中的線程。 – Levi 2009-12-31 19:40:56