我有第三方库,它是用C ++开发的。我的C#app调用此库中的不同函数。函数的结果通过回调返回。该应用程序有4层:View-VM-BusinessLayer-ServiceLayer。在服务层我创建第三方对象的实例并调用它的函数。 SL是单身人士。这是代码片段
SL:
公共任务< bool> InitializeAsync()
{
OnConnectionStateChangedEventHandler connectionStateChangedEventHandler = null;
OnBootCompletedEventHandler bootCompletedEventHandler = null;
if(_coreObject == null)
_coreObject = new CoreObject();
_coreObject.OnBootCompleted + = bootCompletedEventHandler;
_coreObject.OnConnectionStateChanged + = connectionStateChangedEventHandler;
....
}
BL:
ublic类LoginBusinessLogic:ILoginBusinessLogic
{
public Task< LoginResult> LoginAsync(字符串服务器,字符串userName)
{
尝试
{
var address = Common.Helpers.CreateAddress(userName,server);
return CoreService.Instance.InitializeAsync(address);
}
catch(例外)
{
// TODO:记录异常
return null;
}
}
VM:
var result = await _loginBusinessLogic.LoginAsync(Server,UserName);
我需要响应VM中核心对象的事件(OnBootCompleted等)。我尝试使用TaskCompletionSource,但是这个想法是,你调用一些东西并等待事件,在事件结束后,你设置结果。但我需要订阅活动整个应用程序的生活。所以我在考虑事件转发。但我不确定,如果这是一个很好的解决方案。