のクラッシュが、私は私のコードC#の:ManualResetEvent
主要なヘルパーとして this article at msdnを使用して、私のコードを書いた:
private ManualResetEvent _AllDone = new ManualResetEvent(false);
internal void Initialize(int port,string IP)
{
IPEndPoint _Point = new IPEndPoint(IPAddress.Parse(IP), port);
Socket _Accpt = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
_Accpt.Bind(_Point);
_Accpt.Listen(2);
while (true)
{
_AllDone.Reset();
_Accpt.BeginAccept(null, 0, new AsyncCallback(Accept), _Accpt);
_AllDone.WaitOne(); <<crash here
}
}
これは何が起こるかですが、私は(私は問題があると思った)BeginAcceptにブレークポイントを設定しましたしかし、それは通常の手順です。しかし、私は "_AllDone.WaitOne()"を実行しようとすると、サーバーがクラッシュします。
_allDoneをwin32フォームアプリケーションで使用できない場合 - プロジェクトを作成するにはどうすればよいですか?
EDITは私を言及するのを忘れてしまった
は_AllDone.Resetを()で(受け入れ)を書いたが、それは私がそこにブレークポイントを設定し、そこに行くしませんが、それは行くことはありません。私は右のそれを取得する場合
private void Accept(IAsyncResult async)
{
_AllDone.Set();
Socket _Accpt = (Socket)async.AsyncState;
Socket _Handler = _Accpt.EndAccept(async);
StateObject _State = new StateObject();
_State.workSocket = _Handler;
_Handler.BeginReceive(_State.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback), _State);
}
例外の詳細が役に立ちます – Crippledsmurf
例外はありませんが、フリーズ(クラッシュ)のみです。 –
これはどのような「サーバー」ですか? Windowsサービス、または単にテストするサーバーとして動作するコンソールアプリケーション? –