2009-07-15 11 views
0

私はここWSAAsyncSelectとNETについてたくさんの質問をしてきました。何ヶ月も前に私は賞金に500人を費やして自分自身に答えました(私はラッパーを作りました)。最後に私はフレームワークのwinsockに慣れました。WSAAsyncSelectを正しく使用するには?

今日、私はアンマネージドな言語について質問していますが、悪い点は、ソケットを使って作業するフレームワークの方法が間違っていることです。私はDelphiで自分のプロジェクトを書いていますが、私は自然のものが大好きなので、純粋なコードだけを示唆してはいけません。 :)

人々は、別の隠しフォームを作成し、メッセージループを設定してAsyncSelectを適切に使用することをお勧めします。

私の質問は単純です:私は私の人生をその隠されたフォームの中で楽にするために書いた全体のwinsock関数を配置し、WSaAsyncSelectをハンドルで設定しました。メッセージループもありますが、子クラス(多くのクラス、巨大なコード)、親クラスは隠されたフォームです。

WSAAsyncSelectはスレッドセーフですか?これは物事を遅くするだろうか(私はクラスでやったこと)?

メッセージループ外にスレッドを作成する必要はありますか?

AsyncSelectを正しく使用するためのその他のヒントは、十分に理解できます。

編集:私は、AsyncSelect()について直接質問しています。

答えて

1

人々は、それは別の 隠されたフォームを作成し、適切AsyncSelectを使用するためにそこにメッセージループ を設定することが良いことだと言います。

VCLのTClientSocketコンポーネントとTServerSocketコンポーネントを直接使用してWinSockにコーディングしていますか?後者の場合、内部的にWSA​​AsyncSelect()をすでに処理しています(はい、独自の隠しウィンドウを使用します)。

WSAAsyncSelectはスレッドセーフですか?

はい。

これは遅くなります(私は クラスで完了しました)?

あなたは実際にクラスが何をしているのか説明していません。

メッセージループ外のスレッドを作成する必要がありますか?

いいえ、必要に応じて複数のスレッドでソケットを使用できます。ただし、ソケットメッセージは、WSAAsyncSelect()に渡されたウィンドウを所有するどのスレッドでも処理されます。

+0

答えていただきありがとうございます.1つは最後です。私は手で作られたソケットで純粋なwinsockを使用していますが、コンポーネントはありません。 "必要に応じて"ソケットを複数のスレッドで使用する方法を教えてください。 –

関連する問題