c# - 如何实现接口(interface)返回带有空方法体的 IAsyncResult

标签 c# .net wcf asynchronous

如果我想继承 ChannelBase,WCF 需要我实现 IAsyncResult OnBeginOpen(TimeSpan timeout, AsyncCallback callback, object state) 等方法。因为当 channel 打开时我无事可做,所以我宁愿将该方法主体留空。在这些空方法中,我应该返回什么作为 IAsyncResult

最佳答案

通过将 IAsyncResult 实现添加为已完成的异步结果来解决

internal class CompletedAsyncResult : IAsyncResult
{
    public CompletedAsyncResult(object state)
    {
        this.AsyncState = state;
    }

    public object AsyncState { get; set; }

    public WaitHandle AsyncWaitHandle => new ManualResetEvent(true);

    public bool CompletedSynchronously => true;

    public bool IsCompleted => true;
}

像这样使用

protected override IAsyncResult OnBeginOpen(TimeSpan timeout, AsyncCallback callback, object state)
{
    var result = new CompletedAsyncResult(state);
    callback?.Invoke(result);
    return result;
}

关于c# - 如何实现接口(interface)返回带有空方法体的 IAsyncResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54342202/

相关文章:

c# - .NET Core 中的日期时间精度

c# - 如何解码 WCF 中的多部分/相关响应?

c# - 如何在带有配置文件的 Powershell 脚本中使用自定义 WCF 代理?

c# - 在 Uri.TryCreate 代码执行后使用 Uri.Absolute 还是使用原始字符串更好?

c# - 具有读/写超时的命名管道 IPC 示例

c# - 在 C# 中模仿 Fiddler 的 Compose->Raw 功能

c# - 用于赌场类型游戏的 Azure 体系结构

c# - ML.Net 预测分数返回 NaN

.net - 它是 C# 的新样式进度条吗?

c# - 在 WP7 中将 List<T> 转换为 ObservableCollection<T>