IronPython 2.7可以调用异步.NET函数吗?

时间:2018-01-17 18:38:34

标签: c# python-2.7 asynchronous ironpython

在我的应用中嵌入了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#等待的语义相同的语义?

1 个答案:

答案 0 :(得分:0)

我对IronPython知之甚少,但异步管理由.net安装处理,是该语言的一个特性。