gpt4 book ai didi

c# - 排队异步函数调用

转载 作者:太空宇宙 更新时间:2023-11-03 13:19:16 25 4
gpt4 key购买 nike

我正在使用 Excel-DNA 运行异步 excel 函数调用。我的 excel 函数通过通信接口(interface)调用 R。

据我了解comm接口(interface)不能异步调用,必须同步调用。恐怕 R 端的内部状态可能会搞砸这个过程,因此我想明确控制 excel 函数何时运行。

如何创建一个队列并一次只运行一个 excel 函数,即一个准备好后我就开始运行另一个函数。

是的,我确实想异步运行 excel 函数,因为它会阻止 excel session 被卡住。我知道这样做不会提高速度,但对用户来说“感觉更快”。

这是我的示例代码:

    [ExcelFunction]
public static object AsyncRCallTest(int a1, int a2)
{
return ExcelAsyncUtil.Run("ASyncRCallTest", new object[] { a1, a2 }, delegate
{
try
{
var a = RConnection.Evaluate(a1);
var b = RConnection.Evaluate(a2);
return a + b;
}
catch (Exception err)
{
return err.Message;
}
});
}

最佳答案

[MethodImpl(MethodImplOptions.Synchronized)] 似乎可以解决问题(请参阅下面的示例代码)。如果有人可以验证这一点,我会很高兴。

    [ExcelFunction]
public static object AsyncRCallTest(int a1, int a2)
{
return ExcelAsyncUtil.Run("AsyncRCallTest", new object[] { a1, a2 }, delegate
{
return SyncRCallTest(a1, a2);
});
}


[MethodImpl(MethodImplOptions.Synchronized)]
public static object SyncRCallTest(int a1, int a2)
{

try
{
var a = RConnection.Evaluate(a1);
var b = RConnection.Evaluate(a2);
return a + b;
}
catch (Exception err)
{
return err.Message;
}

}

关于c# - 排队异步函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24954874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com