我对这些async方法是否在SSIS 作业中正常工作感到有些困惑。脚本任务项创建一个面向 .NET Framework 4.5 的 Visual Studio 项目,输出类型为类库。
如果我创建 main 方法public async void Main()并在其中await调用async方法,它真的在等待吗?
我在这里看到的一些帖子暗示它确实如此,而另一些则暗示它没有。
不幸的是,SSIS 框架和基本的 .Net 类是在 4.5 框架及其异步执行模型之前创建的。您必须按照声明的方式实现 SSIS 方法;声明是经典的而不是异步的。
当我需要在 SSIS 脚本或自定义组件中调用一些异步方法时,我会像这样使用 Task.Run 包装器
mRes=Task.Run(async () =>
await AsyncMethod(...).ConfigureAwait(false)).Result;
Run Code Online (Sandbox Code Playgroud)
也许这不是最好的方法,但它允许AsyncMethod在 ThreadPool上运行。
您从asyncSSIS 中的调用中获益很少,因为 SSIS 框架本身不是异步就绪的。
| 归档时间: |
|
| 查看次数: |
1410 次 |
| 最近记录: |