异步控制器asp.net的MVC 2.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(); 

有使用异步事件没有因为有很多很多没有实现的事件回调类的任何可能的方式...

非常感谢你多

你总是可以把这个代码放到一个方法,创建委托给此方法和异步调用它:

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