我试图写一个围绕在写在我们的应用程序,这几乎完全写在.NET消耗本机代码的第三方库的C#包装,和我想保持忠实于C#模式。几乎在这个库中的所有调用在本质上是异步的,它似乎是适宜的包裹我所有的异步调用到任务<牛逼>对象。下面是本机库是如何构建一个简化的示例:与任务封装本地异步功能<T>
delegate void MyCallback(string outputData);
class MyNativeLibrary
{
public int RegisterCallback(MyCallback callback); // returns -1 on error
public int RequestData(string inputData); // returns -1 on error
}
现在,我已经通过事件订阅提供我的返回值,但是我相信这将是一个更好的方式来回报我的数据:
class WrapperAroundNativeCode
{
public async Task<string> RequestData(string inputData);
}
到目前为止,我一直在寻找实现这个适当的方式失败,而我在工作<牛逼工作>对象和比我做异步/ AWAIT模式深入到人们有更多的经验。
你怎么知道哪个'RequestData'引起了'MyCallback'要求? – luiscubal
你如何得到异常通知? –
你如何取消注册回调?或者它自动注销自己? – svick