对于async
方法对于SSIS作业是否正常工作,我有些困惑。脚本任务项创建一个针对.NET Framework 4.5的Visual Studio项目,其输出类型为类库。
如果我使主方法public async void Main()
并在其内部对await
方法进行了async
调用,它真的在等待吗?
我在这里看到的一些帖子暗示确实如此,而其他帖子暗示事实并非如此。
答案 0 :(得分:1)
不幸的是,在4.5 Framework及其异步执行模型发展之前,就已经创建了SSIS Framework和基本.Net类。您必须实现声明的SSIS方法。该声明是经典的而不是异步的。
当我需要在SSIS脚本或自定义组件中调用一些异步方法时,可以使用Task.Run包装器
mRes=Task.Run(async () =>
await AsyncMethod(...).ConfigureAwait(false)).Result;
也许这不是最好的方法,但是它允许在ThreadPool上运行AsyncMethod
。
您无法从SSIS中的async
调用中受益,因为SSIS框架本身不是 async-ready 。