IronPython在C#回调函数中返回重复值

时间:2014-07-31 19:06:16

标签: c# python .net callback ironpython

在名为test.py的文件中,我有以下代码:

def foo(callback):
    callback(1, 2, 3)

def bar(x, y, z):
    print x, y, z

在IronPython控制台中执行foo(bar)时,它输出:

1 2 3

我想从C#应用程序中调用foo()。以下C#代码执行foo(),并传递一个C#回调函数。

var engine = Python.CreateEngine();
dynamic scope = engine.CreateScope();
engine.ExecuteFile("test.py", scope);
scope.callbackFunction = new Action<int, int, int>
    ((x, y, z) => Debug.Print("{0}\t{1}\t{2}", x,y,z));
scope.foo(scope.callbackFunction);

输出结果为:

1   2   1

我无法弄明白为什么x == z。为什么C#输出1 2 1而不是1 2 3?我是否错误地发送了C#回调函数?

我在Windows 7上运行它,C#应用程序的目标是.NET 4.5,而我的IronPython版本是2.7.4。

0 个答案:

没有答案