在我的应用中嵌入了IronPython 2.7,并将clr.AddReference()用于托管的.NET dll。
该DLL具有异步功能,例如:
async public Task<string> Foo(string x) {
string y=await bar(x);
return y;
}
从IronPython调用时,我可以在返回时看到Task对象,但不能看到调用的结果。是否有语法等待通话? (道歉,如果显而易见:我是一个Python新手......)
更新:可能在帖子的第一个版本中没有明确问题是什么(并在代码片段中修复了一个愚蠢的拼写错误)。上面的函数工作正常(顺便说一句,不要使用.Result,因为它会导致死锁)。
挑战在于获得Python的答案。在IronPython中,我用以下函数调用此函数:
f=mylib.Foo("hello")
返回一个Task(不是字符串)作为返回值,这是正确的。但是,如果我尝试这个:
g=f.Result
它死锁(如预期的那样)。 IronPython是否支持与C#等待的语义相同的语义?
答案 0 :(得分:0)
我对IronPython知之甚少,但异步管理由.net安装处理,是该语言的一个特性。