2
0
Эх сурвалжийг харах

TAnonymousThread fpc sample

Unknown 6 жил өмнө
parent
commit
d5657d8702

+ 60 - 0
samples/fpc/QuickThreads/AnonymousThreads.lpi

@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<CONFIG>
+  <ProjectOptions>
+    <Version Value="11"/>
+    <PathDelim Value="\"/>
+    <General>
+      <Flags>
+        <MainUnitHasCreateFormStatements Value="False"/>
+        <MainUnitHasTitleStatement Value="False"/>
+        <MainUnitHasScaledStatement Value="False"/>
+      </Flags>
+      <SessionStorage Value="InProjectDir"/>
+      <MainUnit Value="0"/>
+      <Title Value="AnonymousThreads"/>
+      <UseAppBundle Value="False"/>
+      <ResourceType Value="res"/>
+    </General>
+    <BuildModes Count="1">
+      <Item1 Name="Default" Default="True"/>
+    </BuildModes>
+    <PublishOptions>
+      <Version Value="2"/>
+    </PublishOptions>
+    <RunParams>
+      <FormatVersion Value="2"/>
+      <Modes Count="0"/>
+    </RunParams>
+    <Units Count="1">
+      <Unit0>
+        <Filename Value="AnonymousThreads.lpr"/>
+        <IsPartOfProject Value="True"/>
+      </Unit0>
+    </Units>
+  </ProjectOptions>
+  <CompilerOptions>
+    <Version Value="11"/>
+    <PathDelim Value="\"/>
+    <Target>
+      <Filename Value="AnonymousThreads"/>
+    </Target>
+    <SearchPaths>
+      <IncludeFiles Value="$(ProjOutDir)"/>
+      <OtherUnitFiles Value="..\..\.."/>
+      <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
+    </SearchPaths>
+  </CompilerOptions>
+  <Debugging>
+    <Exceptions Count="3">
+      <Item1>
+        <Name Value="EAbort"/>
+      </Item1>
+      <Item2>
+        <Name Value="ECodetoolError"/>
+      </Item2>
+      <Item3>
+        <Name Value="EFOpenError"/>
+      </Item3>
+    </Exceptions>
+  </Debugging>
+</CONFIG>

+ 44 - 0
samples/fpc/QuickThreads/AnonymousThreads.lpr

@@ -0,0 +1,44 @@
+program AnonymousThreads;
+
+{$APPTYPE CONSOLE}
+
+{$MODE DELPHI}
+
+uses
+  Classes,
+  Quick.Commons,
+  Quick.Console,
+  SysUtils,
+  Quick.Threads;
+
+type
+  TMyProcs = class
+    class procedure DoWork;
+    class procedure DoTerminate;
+  end;
+
+  class procedure TMyProcs.DoWork;
+  var
+    i : Integer;
+  begin
+    for i := 0 to 10 do cout('Working %d',[i],etTrace);
+    cout('executed thread',etSuccess);
+  end;
+
+  class procedure TMyProcs.DoTerminate;
+  begin
+    cout('terminated thread',etSuccess);
+    cout('PRESS <ENTER> TO EXIT',TLogEventType.etInfo);
+  end;
+
+begin
+  try
+    TAnonymousThread.Execute(TMyProcs.DoWork)
+    .OnTerminate(TMyProcs.DoTerminate).Start;
+
+    ConsoleWaitForEnterKey;
+  except
+    on E: Exception do
+      Writeln(E.ClassName, ': ', E.Message);
+  end;
+end.