以下のAutoResetEventをどのように置き換えることができるのか疑問に思っていますか?RXのやり方やタスクでそれを行う方法を考えようとしていましたが、それを行う方法を見ることができます。
public void LogOnResponse LogOn()
{
LogOnResponse logOnResponse = null;
var waitEvent = new AutoResetEvent(false);
var listener = _connection.LoginStatusEvent
.Where(x => x.LoginState == LoginState.LoggedOn
|| x.LoginState == LoginState.LoggedRejected);
listener.Subscribe(x => {
logOnResponse = new LogOnResponse();
logOnResponse.InformationMessage = x.Message;
logOnResponse.IsAuthenticated = x.LoginState == LoginState.LoggedOn;
waitEvent.Set();
});
connection.Login(connectionInfo);
waitEvent.WaitOne(2000);
return logOnResponse;
}