gpt4 book ai didi

c# - 如何创建一个立即完成的 IAsyncResult?

转载 作者:太空狗 更新时间:2023-10-29 18:28:09 24 4
gpt4 key购买 nike

我正在实现一个接口(interface),该接口(interface)需要实现 BeginDoSomethingEndDoSomething 方法。然而,我的 DoSomething 并不是真正长时间运行的。为简单起见,假设 DoSomething 只比较两个变量并返回是否 a > b

所以我的 BeginDoSomething 应该是这样的:

protected override IAsyncResult BeginDoSomething(int a, int b, AsyncCallback callback, object state)
{
bool returnValue = a > b;
return ...; //what should I return here?
//The method actually already completed and I don't need to wait for anything
}

我不知道应该返回什么。我只实现 BeginDoSomething 因为我必须这样做,而不是因为我的方法是长时间运行的。我需要实现自己的 IAsyncResult 吗? .NET 库中是否已有实现?

最佳答案

快速破解方法是使用委托(delegate):

protected override IAsyncResult BeginDoSomething(int a, int b, AsyncCallback callback, object state)
{
bool returnValue = a > b;
Func<int,int,bool> func = (x,y) => x > y;
return func.BeginInvoke(a,b,callback,state);
}

这种方法的缺点是,如果两个线程同时调用此方法,您需要小心,否则会出错。

关于c# - 如何创建一个立即完成的 IAsyncResult?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5037422/

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