将异步任务方法目标框架 4.5 转换为目标框架 2.0
本文关键字:目标 框架 转换 方法 异步 任务 | 更新日期: 2023-09-27 17:55:47
我有使用异步Task<ActionResult>
获取URL的SSO服务
它在我的本地环境中工作正常,但是当我实时发布时,出现以下错误:
'/XXXX 应用程序中的服务器错误。
当前应用程序不支持"异步无效"页面事件 配置。要启用此功能,请设置以下配置开关 在 Web.config 中: 有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=252465。
我已经对此进行了研究,显然异步任务功能是为 4.0-4.5 .net 框架开发的。在以前的 .net 框架中有一些不同的模式或方法来执行此操作。
一等奖显然会推动安装.Net 4.5
或至少.Net 4
.但是既然你问的是.Net 2
,这可能不是一个选择。
如果对服务器块的调用直到完成,并且服务器上的工作是异步的,则可以使用 Thread
类委派不同线程中的工作。
以下是实现此目的的一些想法方法:
无返回类型,无参数
var ts = new ThreadStart(DoWorkAsync);
new Thread(ts).Start();
...
public void DoWorkAsync()
{
// This happens on a different thread.
}
无返回类型,带参数
int id = 1;
var pts = new ParameterizedThreadStart(DoWorkWithParamsAsync);
new Thread(pts).Start(id);
...
public void DoWorkWithParamsAsync(object obj)
{
// This happens on a different thread.
int id = (int)obj;
}
使用返回类型 (IAsyncResult)
您可以使用 BeginInvoke
方法,然后使用具有返回类型的特定delegate
签名:
Func<int> returnsIntDel = DoWorkReturnIntAsync;
var asyncRes = returnsIntDel.BeginInvoke(null, null);
//... some other work on main thread here...
int returnedInt = returnsIntDel.EndInvoke(asyncRes);
Console.WriteLine("Done");
...
public int DoWorkReturnIntAsync()
{
// This happens on a different thread.
return 0;
}
在线程之间同步
如果遇到Thread
需要相互通信或等待的任何同步方案,则有可用于这些方案的同步基元类(来自filterdCode博客的图像)。
- 手动重置事件苗条
- 信号灯苗条
- 倒计时事件
- 障碍