.NET Compact Framework のスレッド処理

更新 : 2007 年 11 月

.NET Compact Framework では、主要なスレッド処理機能がサポートされていますが、.NET Framework の次の機能はサポートされていません。

  • 現在のスレッド上にある圧縮されたスタックへのアクセス。

  • Win32 OVERLAPPED 構造体のマネージ表現。

  • 実行コンテキストを管理するクラス。

  • セマフォの使用。

  • スレッド状態属性。

  • ハンドル取得以外の、ほとんどの待機ハンドル操作。

.NET Compact Framework では、Thread.Start メソッドと共に使用するための ThreadStart デリゲートと、Timer と共に使用するための TimerCallback デリゲートを使用できます。

次のスレッド処理メソッドを使用してタイムアウト パラメータを指定できます。

スレッド プールの変更

.NET Compact Framework version 1.0 では、スレッド プール内の既定のスレッド最大数は 256 (スタック サイズは 64 KB) です。.NET Compact Framework version 2.0 およびそれ以降のバージョンでは、このスレッド最大数は 25 (スタック サイズは 128 KB) に削減されており、.NET Framework の機能により近くなっています。

スレッド プール内に使用可能なスレッドが存在しない場合は、HTTP 要求が失敗し、例外がスローされます。このような状況での主な例外を次の表に示します。

例外

条件

OutOfMemoryException

ユーザーのコールバックをキューに配置できない

WebException

処理を完了するための十分なスレッドがスレッド プール内に存在しない

同時 Web 要求数を削減するか、スレッド プール内の最大許容スレッド数を増加させることにより、スレッドの不足を避けることができます。.NET Compact Framework 2.0 は、SetMaxThreads メソッドをサポートします。そのパラメータは、次の表のように指定します。

パラメータ

説明

workerThreads

スレッド プール内のワーカー スレッドの最大数。これには任意の値を指定できます。

completionPortThreads

スレッド プール内の非同期スレッドの最大数。現在、この値は .NET Compact Framework では無視されますが、1 ~ 1,000 の間で設定する必要があります。将来の互換性を考えて、.NET Framework の既定値である 500 に設定することをお勧めします。

.NET Compact Framework 1.0 を実行するデバイスでは、レジストリ設定を変更することによりスレッド プール内の許容スレッド最大数を削減できます。CFROOT\ThreadPool キーの MaxThreads を必要な値に設定します。このレジストリ キーは .NET Compact Framework の新バージョンでは使用されないことに注意してください。

参照

参照

System.Threading

その他の技術情報

.NET Compact Framework のアプリケーション開発