gpt4 book ai didi

c# - BeginXXX 中 FromAsync 的参数太多?

转载 作者:可可西里 更新时间:2023-11-01 07:44:45 24 4
gpt4 key购买 nike

我有一个具有以下签名的异步方法:

IAsyncResult BeginGetMyNumber(string foo, string bar, string bat, int bam, AsyncCallback callback, object state)

我想像这样使用 Factory.FromAsync 来执行它:

var result  = Task<int>.Factory.FromAsync(
instance.BeginGetMyNumber,
instance.EndGetMyNumber,
"foo",
"bar",
"bat",
100, /*bam*/
null);

但我收到以下错误:

Argument 1: cannot convert from 'method group' to 'System.Func'

似乎没有合适的重载 FromAsync 方法 http://msdn.microsoft.com/en-us/library/system.threading.tasks.taskfactory.fromasync.aspx ,它在 BeginXXX 方法上最多只支持 5 个参数(包括回调和状态)。

除了重构 BeginXXX 方法以获取一个对象而不是六个参数之外,还有没有其他方法可以使用 FromAsync 来执行它?

最佳答案

result = Task<string>.Factory.FromAsync(
(callback, state) => instance.BeginGetMyNumber("foo", "bar", "bat", 1, callback, state),
instance.EndGetMyNumber, state: null);

此技术(部分函数应用程序)适用于具有任意数量输入参数的 begin 方法。

关于c# - BeginXXX 中 FromAsync 的参数太多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15582450/

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