gpt4 book ai didi

c# - 是否可以在单个方法中隐藏回调机制?

转载 作者:行者123 更新时间:2023-11-30 20:06:23 24 4
gpt4 key购买 nike

我有一个这样的界面:

interface IAuthentication
{
void AuthenticateAsync(string user, string pwhash);
event EventHandler<AuthenticationResult> AuthenticationDone;
}

这是通过在完成时引发事件来实现的。现在,我想将此机制包装在一个单一的阻塞方法中,该方法在完成后返回身份验证结果:

AuthenticationResult Authenticate(string user, string pwhash)
{
var auth = GetIAuthenticator();
// ... do something
return <the authentication result from the even argument>;
}

这有可能吗?

最佳答案

有了等待句柄,你不需要检查一些标志、阻塞线程和设置超时:

private AuthenticationResult Authenticate(string user, string pwhash)
{
IAuthentication auth = GetIAuthenticator();
AuthenticationResult result = null;
AutoResetEvent waitHangle = new AutoResetEvent(false);

auth.AuthenticationDone += (o, e) =>
{
result = e;
waitHangle.Set();
};

auth.AuthenticateAsync(user, pwhash);
waitHangle.WaitOne(); // or waitHangle.WaitOne(interval);
return result;
}

关于c# - 是否可以在单个方法中隐藏回调机制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9823304/

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