出於個人興趣,我決定嘗試使用Reactive Extensions(又名Rx)編寫基本Web服務器。幾乎立即,我碰到以下問題:無功擴展Web服務器
HttpListener的異步模式與正常的異步模式簽名不匹配,EndGetContext返回HttpListenerContext而不是IAsyncResult!
所以我的問題是:有沒有辦法解決這個問題?
下面是一些代碼 - 編譯器(正確地)抱怨的第二個參數Observable.FromAsyncPattern:
更新 - 正如喬恩正確地指出,這是不是模式,它的抱怨,我的天堂」 T提供的返回類型 - 這個工程:
var observable = Observable.FromAsyncPattern<HttpListenerContext>(listener.BeginGetContext, listener.EndGetContext);
原始代碼:
using System;
using System.Net;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace RxWebTest
{
class Program
{
static void Main(string[] args)
{
HttpListener listener = new HttpListener();
try
{
listener.Start();
var observable = Observable.FromAsyncPattern(listener.BeginGetContext, listener.EndGetContext);
Console.ReadLine();
}
finally
{
listener.Abort();
}
}
}
}
謝謝 - 很好發現:) – Nathan 2011-06-16 08:38:31