Develop and Download Open Source Software

Browse Subversion Repository

Annotation of /Unit2.pas

Parent Directory Parent Directory | Revision Log Revision Log


Revision 5 - (hide annotations) (download) (as text)
Sun Sep 6 02:21:34 2015 UTC (8 years, 6 months ago) by yamat0jp
File MIME type: text/x-pascal
File size: 1432 byte(s)
Threadを考え直し同時アクセスをなくしました。これで途中停止しないはずです。
1 yamat0jp 1 unit Unit2;
2    
3     interface
4    
5     uses
6     System.Classes;
7    
8     type
9     TRensa = class(TThread)
10     private
11     { Private 宣言 }
12     protected
13     procedure Execute; override;
14     end;
15    
16     implementation
17    
18     {
19     重要: ビジュアル コンポーネントにおけるオブジェクトのメソッドとプロパティは、Synchronize を使って
20     呼び出されるメソッドでのみ使用できます。たとえば、次のようになります。
21    
22     Synchronize(UpdateCaption);
23    
24     UpdateCaption は、たとえば次のようなコードになります。
25    
26     procedure TRensa.UpdateCaption;
27     begin
28     Form1.Caption := 'スレッドで更新されました';
29     end;
30    
31     あるいは
32    
33     Synchronize(
34     procedure
35     begin
36     Form1.Caption := '無名メソッドを通じてスレッドで更新されました'
37     end
38     )
39     );
40    
41     ここでは、無名メソッドが渡されています。
42    
43     同様に、開発者は上記と同じようなパラメータで Queue メソッドを呼び出すことができます。
44     ただし、別の TThread クラスを第 1 パラメータとして渡し、呼び出し元のスレッドを
45     もう一方のスレッドでキューに入れます。
46    
47     }
48    
49     uses Unit1;
50    
51     { TRensa }
52    
53     procedure TRensa.Execute;
54     var
55     s: TPlayer;
56     begin
57     { スレッドとして実行したいコードをここに記述してください }
58     s := Form1.Player2;
59     s.Com := true;
60     s.Start(true);
61     while Terminated = false do
62     begin
63     Synchronize(
64     procedure
65     begin
66 yamat0jp 4 Form1.FormPaint(s);
67 yamat0jp 5 s.Execute;
68 yamat0jp 1 end);
69 yamat0jp 5 if s.Sleeps = true then
70     Sleep(100)
71     else
72     s.Sleeps:=true;
73 yamat0jp 1 end;
74     end;
75    
76     end.

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26