DoboWiki
Top
> .NETプログラミング研究/20 をテンプレートにして作成
.NETプログラミング研究/20 をテンプレートにして作成
開始行:
#title(.NETプログラミング研究 第20号)
#navi(.NETプログラミング研究)
#contents
*.NETプログラミング研究 第20号 [#cba6c649]
**.NET Tips [#h0dba22c]
**.NETのマルチスレッドプログラミング その2 [#g5b20a9c]
#column(注意){{
この記事の最新版は「[[.NETのマルチスレッドプログラミング>...
}}
前回の続きです。
***スレッドの状態を取得する [#ib1814ba]
スレッドの状態を取得するには、Thread.ThreadStateプロパテ...
-[[ThreadState 列挙体>http://www.microsoft.com/japan/msdn...
下のコードは、スレッドをThread.Startで開始し、Suspendで中...
#code(vbnet){{
Class MainClass
'エントリポイント
Public Shared Sub Main()
'Threadオブジェクトを作成する
Dim t1 As System.Threading.Thread = _
New System.Threading.Thread( _
New System.Threading.ThreadStart(AddressO...
'スレッドの状態を表示
Console.WriteLine("ThreadState:{0}", t1.ThreadSta...
Console.WriteLine(">Start")
'スレッドを開始する
t1.Start()
System.Threading.Thread.Sleep(50)
Console.WriteLine("ThreadState:{0}", t1.ThreadSta...
Console.WriteLine(">Suspend")
'スレッドを中断
t1.Suspend()
Console.WriteLine("ThreadState:{0}", t1.ThreadSta...
System.Threading.Thread.Sleep(50)
Console.WriteLine("ThreadState:{0}", t1.ThreadSta...
Console.WriteLine(">Resume")
'スレッドの再開
t1.Resume()
Console.WriteLine("ThreadState:{0}", t1.ThreadSta...
System.Threading.Thread.Sleep(50)
Console.WriteLine("ThreadState:{0}", t1.ThreadSta...
Console.WriteLine(">Abort")
'スレッドの停止
t1.Abort()
Console.WriteLine("ThreadState:{0}", t1.ThreadSta...
'スレッドが終了するまで待つ
t1.Join()
Console.WriteLine("ThreadState:{0}", t1.ThreadSta...
Console.ReadLine()
End Sub
'別スレッドで実行するメソッド
Private Shared Sub MyMethod1()
'無限ループ
While True
End While
End Sub
End Class
}}
#code(csharp){{
class MainClass
{
//エントリポイント
public static void Main()
{
//Threadオブジェクトを作成する
System.Threading.Thread t1 =
new System.Threading.Thread(
new System.Threading.ThreadStart(MyMethod1));
//スレッドの状態を表示
Console.WriteLine("ThreadState:{0}", t1.ThreadState.ToS...
Console.WriteLine(">Start");
//スレッドを開始する
t1.Start();
System.Threading.Thread.Sleep(50);
Console.WriteLine("ThreadState:{0}", t1.ThreadState.ToS...
Console.WriteLine(">Suspend");
//スレッドを中断
t1.Suspend();
Console.WriteLine("ThreadState:{0}", t1.ThreadState.ToS...
System.Threading.Thread.Sleep(50);
Console.WriteLine("ThreadState:{0}", t1.ThreadState.ToS...
Console.WriteLine(">Resume");
//スレッドの再開
t1.Resume();
Console.WriteLine("ThreadState:{0}", t1.ThreadState.ToS...
System.Threading.Thread.Sleep(50);
Console.WriteLine("ThreadState:{0}", t1.ThreadState.ToS...
Console.WriteLine(">Abort");
//スレッドの停止
t1.Abort();
Console.WriteLine("ThreadState:{0}", t1.ThreadState.ToS...
//スレッドが終了するまで待つ
t1.Join();
Console.WriteLine("ThreadState:{0}", t1.ThreadState.ToS...
Console.ReadLine();
}
//別スレッドで実行するメソッド
private static void MyMethod1()
{
//無限ループ
for (;;);
}
}
}}
出力結果は次のようになります。
#pre{{
ThreadState:Unstarted
>Start
ThreadState:Running
>Suspend
ThreadState:SuspendRequested
ThreadState:Suspended
>Resume
ThreadState:Running
ThreadState:Running
>Abort
ThreadState:AbortRequested
ThreadState:Stopped
}}
スレッド開始前はUnstarted、開始後はRunning、Suspendメソッ...
上記の例ではそうなりませんでしたが、スレッドが同時に複数...
if ((t1.ThreadState & ThreadState.Stopped) > 0)
のようにします。
また、スレッドが実行中かどうか調べるだけであれば、IsAlive...
参考:
-[[スレッド状態>http://www.microsoft.com/japan/msdn/libra...
-[[スレッドの状態>http://www.microsoft.com/japan/msdn/lib...
***スレッドが終了するまで待機する [#k2aaadca]
あるスレッドが終了するまで現在のスレッドをブロックするに...
次にJoinメソッドを使用した簡単な例を示します。
#code(vbnet){{
'エントリポイント
Public Shared Sub Main()
'スレッドの作成と開始
Dim t As Thread = _
New Thread(New ThreadStart(AddressOf MyThread))
t.Start()
'スレッドtが終了するまでブロックする
t.Join()
Console.WriteLine("エンターキーで終了します")
Console.ReadLine()
End Sub
Private Shared Sub MyThread()
'何らかの処理があるものとする
Thread.Sleep(1000)
Console.WriteLine("終了しました")
End Sub
}}
#code(csharp){{
//using System.Threading;
//が宣言されているものとする
//エントリポイント
public static void Main()
{
//スレッドの作成と開始
Thread t = new Thread(new ThreadStart(MyThread));
t.Start();
//スレッドtが終了するまでブロックする
t.Join();
Console.WriteLine("エンターキーで終了します");
Console.ReadLine();
}
private static void MyThread()
{
//何らかの処理があるものとする
Thread.Sleep(1000);
Console.WriteLine("終了しました");
}
}}
上記の例のようにJoinメソッドを引数なしで呼び出すと、スレ...
Joinメソッドにより待機しているスレッドの状態は、WaitSleep...
***スレッドを中止させる、中止をキャンセルする [#yc4fe716]
実行中のスレッドを中止させる(強制終了させる)には、その...
Abortメソッドを呼び出してもすぐにスレッドが中止されるとい...
-[[Thread.Suspend、ガベージ コレクション、およびセーフ ポ...
次の例では、別スレッドでPrintIntegerメソッドを実行し、そ...
#code(vbnet){{
'Imports System.Threading
'が宣言されているものとする
'エントリポイント
Public Shared Sub Main()
'Threadオブジェクトを作成する
Dim t As Thread = _
New Thread(New ThreadStart(AddressOf PrintInteger))
'スレッドを開始する
t.Start()
'しばらく待機する
Thread.Sleep(1000)
'スレッドを中断する
t.Abort()
'スレッドが終了するまで待機する
t.Join()
Console.ReadLine()
End Sub
'別スレッドで実行するメソッド
Private Shared Sub PrintInteger()
'無限ループ
While True
Dim i As Integer
For i = 0 To 9
Console.Write(i)
Next
'到達できないコード
Console.WriteLine("Thread end")
End While
End Sub
}}
#code(csharp){{
//using System.Threading;
//が宣言されているものとする
//エントリポイント
public static void Main()
{
//Threadオブジェクトを作成する
Thread t = new Thread(new ThreadStart(PrintInteger));
//スレッドを開始する
t.Start();
//しばらく待機する
Thread.Sleep(1000);
//スレッドを中断する
t.Abort();
//スレッドが終了するまで待機する
t.Join();
Console.ReadLine();
}
//別スレッドで実行するメソッド
private static void PrintInteger()
{
//無限ループ
for (;;)
for (int i = 0; i < 10; i++)
Console.Write(i);
//到達できないコード
Console.WriteLine("Thread end");
}
}}
Abortメソッドを呼び出すと、スレッドでThreadAbortException...
次の例では上記のコードに追加して、ThreadAbortExceptionを...
Console.WriteLine("Thread end");
が実行されるようになることに注目してください。
#code(vbnet){{
'Imports System.Threading
'が宣言されているものとする
'エントリポイント
Public Shared Sub Main()
'Threadオブジェクトを作成する
Dim t As Thread = _
New Thread(New ThreadStart(AddressOf PrintInteger))
'スレッドを開始する
t.Start()
'しばらく待機する
Thread.Sleep(1000)
'スレッドを中断する
t.Abort()
'スレッドが終了するまで待機する
t.Join()
Console.ReadLine()
End Sub
'別スレッドで実行するメソッド
Private Shared Sub PrintInteger()
Try
'無限ループ
While True
Dim i As Integer
For i = 0 To 9
Console.Write(i)
Next
End While
Catch ex As ThreadAbortException
'Abortをキャンセルする
Thread.ResetAbort()
End Try
'Thread.ResetAbortにより、以下が実行されるようになる
Console.WriteLine("Thread end")
End Sub
}}
#code(csharp){{
//using System.Threading;
//が宣言されているものとする
//エントリポイント
public static void Main()
{
//Threadオブジェクトを作成する
Thread t = new Thread(new ThreadStart(PrintInteger));
//スレッドを開始する
t.Start();
//しばらく待機する
Thread.Sleep(1000);
//スレッドを中断する
t.Abort();
//スレッドが終了するまで待機する
t.Join();
Console.ReadLine();
}
//別スレッドで実行するメソッド
private static void PrintInteger()
{
try
{
//無限ループ
for (;;)
for (int i = 0; i < 10; i++)
Console.Write(i);
}
catch (ThreadAbortException)
{
//Abortをキャンセルする
Thread.ResetAbort();
}
//Thread.ResetAbortにより、以下が実行されるようになる
Console.WriteLine("Thread end");
}
}}
ただしヘルプ(「マネージ スレッド処理の実施」)には、
「他のスレッドを終了させるために Thread.Abort を使用する...
と書かれていますので、注意が必要です。(別スレッドに対し...
-[[Thread.Abort メソッド>http://www.microsoft.com/japan/m...
***スレッドを一時停止させる [#t4b5cb0a]
スレッドを一時的に中断するにはThread.Suspendメソッドを、...
Thread.Abortと同様にThread.Suspendメソッドを呼び出してす...
Suspendメソッドが何回呼び出されていたとしても、Resumeメソ...
次の例では、起動したスレッド(t)をSuspendメソッドで中断さ...
#code(vbnet){{
'エントリポイント
Public Shared Sub Main()
'PrintIntegerメソッドを実行するための
'Threadオブジェクトを作成する
Dim t As System.Threading.Thread = _
New System.Threading.Thread( _
New System.Threading.ThreadStart(AddressOf Pr...
'スレッドを開始する
t.Start()
'しばらく待機する
System.Threading.Thread.Sleep(100)
Console.Write("<< Suspend >>")
'スレッドを中断する
t.Suspend()
'再びしばらく待機する
System.Threading.Thread.Sleep(1000)
'中断したスレッドを再開する
t.Resume()
Console.Write("<< Resumed >>")
'みたびしばらく待機する
System.Threading.Thread.Sleep(100)
Console.Write("<< Abort >>")
'スレッドを終了する
t.Abort()
Console.ReadLine()
End Sub
'別スレッドで実行するメソッド
Private Shared Sub PrintInteger()
'無限ループ
While True
Dim i As Integer
For i = 0 To 9
Console.Write(i)
Next
End While
End Sub
}}
#code(csharp){{
//エントリポイント
public static void Main()
{
//PrintIntegerメソッドを実行するための
//Threadオブジェクトを作成する
System.Threading.Thread t =
new System.Threading.Thread(
new System.Threading.ThreadStart(PrintInteger));
//スレッドを開始する
t.Start();
//しばらく待機する
System.Threading.Thread.Sleep(100);
Console.Write("<< Suspend >>");
//スレッドを中断する
t.Suspend();
//再びしばらく待機する
System.Threading.Thread.Sleep(1000);
//中断したスレッドを再開する
t.Resume();
Console.Write("<< Resumed >>");
//みたびしばらく待機する
System.Threading.Thread.Sleep(100);
Console.Write("<< Abort >>");
//スレッドを終了する
t.Abort();
Console.ReadLine();
}
//別スレッドで実行するメソッド
private static void PrintInteger()
{
//無限ループ
for (;;)
for (int i = 0; i < 10; i++)
Console.Write(i);
}
}}
(補足:
上記のコードでは、
t.Suspend();
と
t.Resume();
の間にConsole.Writeを入れると、そこでフリーズしてしまいま...
スレッドを一時停止させる方法として、Thread.Sleepメソッド...
なお、この方法はスレッドを同期させる方法としては不適切で...
参考:
-[[スレッドの一時中断と再開>http://www.microsoft.com/japa...
**コメント [#y3208879]
#comment
//これより下は編集しないでください
#pageinfo([[:Category/.NET]],2003-11-04 (火) 06:00:00,DOB...
終了行:
#title(.NETプログラミング研究 第20号)
#navi(.NETプログラミング研究)
#contents
*.NETプログラミング研究 第20号 [#cba6c649]
**.NET Tips [#h0dba22c]
**.NETのマルチスレッドプログラミング その2 [#g5b20a9c]
#column(注意){{
この記事の最新版は「[[.NETのマルチスレッドプログラミング>...
}}
前回の続きです。
***スレッドの状態を取得する [#ib1814ba]
スレッドの状態を取得するには、Thread.ThreadStateプロパテ...
-[[ThreadState 列挙体>http://www.microsoft.com/japan/msdn...
下のコードは、スレッドをThread.Startで開始し、Suspendで中...
#code(vbnet){{
Class MainClass
'エントリポイント
Public Shared Sub Main()
'Threadオブジェクトを作成する
Dim t1 As System.Threading.Thread = _
New System.Threading.Thread( _
New System.Threading.ThreadStart(AddressO...
'スレッドの状態を表示
Console.WriteLine("ThreadState:{0}", t1.ThreadSta...
Console.WriteLine(">Start")
'スレッドを開始する
t1.Start()
System.Threading.Thread.Sleep(50)
Console.WriteLine("ThreadState:{0}", t1.ThreadSta...
Console.WriteLine(">Suspend")
'スレッドを中断
t1.Suspend()
Console.WriteLine("ThreadState:{0}", t1.ThreadSta...
System.Threading.Thread.Sleep(50)
Console.WriteLine("ThreadState:{0}", t1.ThreadSta...
Console.WriteLine(">Resume")
'スレッドの再開
t1.Resume()
Console.WriteLine("ThreadState:{0}", t1.ThreadSta...
System.Threading.Thread.Sleep(50)
Console.WriteLine("ThreadState:{0}", t1.ThreadSta...
Console.WriteLine(">Abort")
'スレッドの停止
t1.Abort()
Console.WriteLine("ThreadState:{0}", t1.ThreadSta...
'スレッドが終了するまで待つ
t1.Join()
Console.WriteLine("ThreadState:{0}", t1.ThreadSta...
Console.ReadLine()
End Sub
'別スレッドで実行するメソッド
Private Shared Sub MyMethod1()
'無限ループ
While True
End While
End Sub
End Class
}}
#code(csharp){{
class MainClass
{
//エントリポイント
public static void Main()
{
//Threadオブジェクトを作成する
System.Threading.Thread t1 =
new System.Threading.Thread(
new System.Threading.ThreadStart(MyMethod1));
//スレッドの状態を表示
Console.WriteLine("ThreadState:{0}", t1.ThreadState.ToS...
Console.WriteLine(">Start");
//スレッドを開始する
t1.Start();
System.Threading.Thread.Sleep(50);
Console.WriteLine("ThreadState:{0}", t1.ThreadState.ToS...
Console.WriteLine(">Suspend");
//スレッドを中断
t1.Suspend();
Console.WriteLine("ThreadState:{0}", t1.ThreadState.ToS...
System.Threading.Thread.Sleep(50);
Console.WriteLine("ThreadState:{0}", t1.ThreadState.ToS...
Console.WriteLine(">Resume");
//スレッドの再開
t1.Resume();
Console.WriteLine("ThreadState:{0}", t1.ThreadState.ToS...
System.Threading.Thread.Sleep(50);
Console.WriteLine("ThreadState:{0}", t1.ThreadState.ToS...
Console.WriteLine(">Abort");
//スレッドの停止
t1.Abort();
Console.WriteLine("ThreadState:{0}", t1.ThreadState.ToS...
//スレッドが終了するまで待つ
t1.Join();
Console.WriteLine("ThreadState:{0}", t1.ThreadState.ToS...
Console.ReadLine();
}
//別スレッドで実行するメソッド
private static void MyMethod1()
{
//無限ループ
for (;;);
}
}
}}
出力結果は次のようになります。
#pre{{
ThreadState:Unstarted
>Start
ThreadState:Running
>Suspend
ThreadState:SuspendRequested
ThreadState:Suspended
>Resume
ThreadState:Running
ThreadState:Running
>Abort
ThreadState:AbortRequested
ThreadState:Stopped
}}
スレッド開始前はUnstarted、開始後はRunning、Suspendメソッ...
上記の例ではそうなりませんでしたが、スレッドが同時に複数...
if ((t1.ThreadState & ThreadState.Stopped) > 0)
のようにします。
また、スレッドが実行中かどうか調べるだけであれば、IsAlive...
参考:
-[[スレッド状態>http://www.microsoft.com/japan/msdn/libra...
-[[スレッドの状態>http://www.microsoft.com/japan/msdn/lib...
***スレッドが終了するまで待機する [#k2aaadca]
あるスレッドが終了するまで現在のスレッドをブロックするに...
次にJoinメソッドを使用した簡単な例を示します。
#code(vbnet){{
'エントリポイント
Public Shared Sub Main()
'スレッドの作成と開始
Dim t As Thread = _
New Thread(New ThreadStart(AddressOf MyThread))
t.Start()
'スレッドtが終了するまでブロックする
t.Join()
Console.WriteLine("エンターキーで終了します")
Console.ReadLine()
End Sub
Private Shared Sub MyThread()
'何らかの処理があるものとする
Thread.Sleep(1000)
Console.WriteLine("終了しました")
End Sub
}}
#code(csharp){{
//using System.Threading;
//が宣言されているものとする
//エントリポイント
public static void Main()
{
//スレッドの作成と開始
Thread t = new Thread(new ThreadStart(MyThread));
t.Start();
//スレッドtが終了するまでブロックする
t.Join();
Console.WriteLine("エンターキーで終了します");
Console.ReadLine();
}
private static void MyThread()
{
//何らかの処理があるものとする
Thread.Sleep(1000);
Console.WriteLine("終了しました");
}
}}
上記の例のようにJoinメソッドを引数なしで呼び出すと、スレ...
Joinメソッドにより待機しているスレッドの状態は、WaitSleep...
***スレッドを中止させる、中止をキャンセルする [#yc4fe716]
実行中のスレッドを中止させる(強制終了させる)には、その...
Abortメソッドを呼び出してもすぐにスレッドが中止されるとい...
-[[Thread.Suspend、ガベージ コレクション、およびセーフ ポ...
次の例では、別スレッドでPrintIntegerメソッドを実行し、そ...
#code(vbnet){{
'Imports System.Threading
'が宣言されているものとする
'エントリポイント
Public Shared Sub Main()
'Threadオブジェクトを作成する
Dim t As Thread = _
New Thread(New ThreadStart(AddressOf PrintInteger))
'スレッドを開始する
t.Start()
'しばらく待機する
Thread.Sleep(1000)
'スレッドを中断する
t.Abort()
'スレッドが終了するまで待機する
t.Join()
Console.ReadLine()
End Sub
'別スレッドで実行するメソッド
Private Shared Sub PrintInteger()
'無限ループ
While True
Dim i As Integer
For i = 0 To 9
Console.Write(i)
Next
'到達できないコード
Console.WriteLine("Thread end")
End While
End Sub
}}
#code(csharp){{
//using System.Threading;
//が宣言されているものとする
//エントリポイント
public static void Main()
{
//Threadオブジェクトを作成する
Thread t = new Thread(new ThreadStart(PrintInteger));
//スレッドを開始する
t.Start();
//しばらく待機する
Thread.Sleep(1000);
//スレッドを中断する
t.Abort();
//スレッドが終了するまで待機する
t.Join();
Console.ReadLine();
}
//別スレッドで実行するメソッド
private static void PrintInteger()
{
//無限ループ
for (;;)
for (int i = 0; i < 10; i++)
Console.Write(i);
//到達できないコード
Console.WriteLine("Thread end");
}
}}
Abortメソッドを呼び出すと、スレッドでThreadAbortException...
次の例では上記のコードに追加して、ThreadAbortExceptionを...
Console.WriteLine("Thread end");
が実行されるようになることに注目してください。
#code(vbnet){{
'Imports System.Threading
'が宣言されているものとする
'エントリポイント
Public Shared Sub Main()
'Threadオブジェクトを作成する
Dim t As Thread = _
New Thread(New ThreadStart(AddressOf PrintInteger))
'スレッドを開始する
t.Start()
'しばらく待機する
Thread.Sleep(1000)
'スレッドを中断する
t.Abort()
'スレッドが終了するまで待機する
t.Join()
Console.ReadLine()
End Sub
'別スレッドで実行するメソッド
Private Shared Sub PrintInteger()
Try
'無限ループ
While True
Dim i As Integer
For i = 0 To 9
Console.Write(i)
Next
End While
Catch ex As ThreadAbortException
'Abortをキャンセルする
Thread.ResetAbort()
End Try
'Thread.ResetAbortにより、以下が実行されるようになる
Console.WriteLine("Thread end")
End Sub
}}
#code(csharp){{
//using System.Threading;
//が宣言されているものとする
//エントリポイント
public static void Main()
{
//Threadオブジェクトを作成する
Thread t = new Thread(new ThreadStart(PrintInteger));
//スレッドを開始する
t.Start();
//しばらく待機する
Thread.Sleep(1000);
//スレッドを中断する
t.Abort();
//スレッドが終了するまで待機する
t.Join();
Console.ReadLine();
}
//別スレッドで実行するメソッド
private static void PrintInteger()
{
try
{
//無限ループ
for (;;)
for (int i = 0; i < 10; i++)
Console.Write(i);
}
catch (ThreadAbortException)
{
//Abortをキャンセルする
Thread.ResetAbort();
}
//Thread.ResetAbortにより、以下が実行されるようになる
Console.WriteLine("Thread end");
}
}}
ただしヘルプ(「マネージ スレッド処理の実施」)には、
「他のスレッドを終了させるために Thread.Abort を使用する...
と書かれていますので、注意が必要です。(別スレッドに対し...
-[[Thread.Abort メソッド>http://www.microsoft.com/japan/m...
***スレッドを一時停止させる [#t4b5cb0a]
スレッドを一時的に中断するにはThread.Suspendメソッドを、...
Thread.Abortと同様にThread.Suspendメソッドを呼び出してす...
Suspendメソッドが何回呼び出されていたとしても、Resumeメソ...
次の例では、起動したスレッド(t)をSuspendメソッドで中断さ...
#code(vbnet){{
'エントリポイント
Public Shared Sub Main()
'PrintIntegerメソッドを実行するための
'Threadオブジェクトを作成する
Dim t As System.Threading.Thread = _
New System.Threading.Thread( _
New System.Threading.ThreadStart(AddressOf Pr...
'スレッドを開始する
t.Start()
'しばらく待機する
System.Threading.Thread.Sleep(100)
Console.Write("<< Suspend >>")
'スレッドを中断する
t.Suspend()
'再びしばらく待機する
System.Threading.Thread.Sleep(1000)
'中断したスレッドを再開する
t.Resume()
Console.Write("<< Resumed >>")
'みたびしばらく待機する
System.Threading.Thread.Sleep(100)
Console.Write("<< Abort >>")
'スレッドを終了する
t.Abort()
Console.ReadLine()
End Sub
'別スレッドで実行するメソッド
Private Shared Sub PrintInteger()
'無限ループ
While True
Dim i As Integer
For i = 0 To 9
Console.Write(i)
Next
End While
End Sub
}}
#code(csharp){{
//エントリポイント
public static void Main()
{
//PrintIntegerメソッドを実行するための
//Threadオブジェクトを作成する
System.Threading.Thread t =
new System.Threading.Thread(
new System.Threading.ThreadStart(PrintInteger));
//スレッドを開始する
t.Start();
//しばらく待機する
System.Threading.Thread.Sleep(100);
Console.Write("<< Suspend >>");
//スレッドを中断する
t.Suspend();
//再びしばらく待機する
System.Threading.Thread.Sleep(1000);
//中断したスレッドを再開する
t.Resume();
Console.Write("<< Resumed >>");
//みたびしばらく待機する
System.Threading.Thread.Sleep(100);
Console.Write("<< Abort >>");
//スレッドを終了する
t.Abort();
Console.ReadLine();
}
//別スレッドで実行するメソッド
private static void PrintInteger()
{
//無限ループ
for (;;)
for (int i = 0; i < 10; i++)
Console.Write(i);
}
}}
(補足:
上記のコードでは、
t.Suspend();
と
t.Resume();
の間にConsole.Writeを入れると、そこでフリーズしてしまいま...
スレッドを一時停止させる方法として、Thread.Sleepメソッド...
なお、この方法はスレッドを同期させる方法としては不適切で...
参考:
-[[スレッドの一時中断と再開>http://www.microsoft.com/japa...
**コメント [#y3208879]
#comment
//これより下は編集しないでください
#pageinfo([[:Category/.NET]],2003-11-04 (火) 06:00:00,DOB...
ページ名:
▲
▼
[
トップ
] [
新規
|
子ページ作成
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]