Added IX2InteractiveServiceContext interface to allow running code in the main thread when in an interactive context
This commit is contained in:
parent
8de40e4f85
commit
72d08518f8
@ -2,11 +2,13 @@ unit X2UtService.GUIContext;
|
||||
|
||||
interface
|
||||
uses
|
||||
System.Classes,
|
||||
|
||||
X2UtService.Intf;
|
||||
|
||||
|
||||
type
|
||||
TX2ServiceContextGUI = class(TInterfacedObject, IX2ServiceContext)
|
||||
TX2ServiceContextGUI = class(TInterfacedObject, IX2ServiceContext, IX2InteractiveServiceContext)
|
||||
protected
|
||||
procedure StartService(AService: IX2Service); virtual;
|
||||
public
|
||||
@ -14,6 +16,10 @@ type
|
||||
|
||||
{ IX2ServiceContext }
|
||||
function GetMode: TX2ServiceMode;
|
||||
|
||||
|
||||
{ IX2InteractiveServiceContext }
|
||||
procedure RunInteractive(AProc: TThreadProcedure);
|
||||
end;
|
||||
|
||||
|
||||
@ -55,4 +61,10 @@ begin
|
||||
Application.Run;
|
||||
end;
|
||||
|
||||
|
||||
procedure TX2ServiceContextGUI.RunInteractive(AProc: TThreadProcedure);
|
||||
begin
|
||||
TThread.Queue(nil, AProc);
|
||||
end;
|
||||
|
||||
end.
|
||||
|
@ -2,7 +2,8 @@ unit X2UtService.Intf;
|
||||
|
||||
interface
|
||||
uses
|
||||
Classes;
|
||||
System.Classes,
|
||||
System.SysUtils;
|
||||
|
||||
|
||||
type
|
||||
@ -17,6 +18,12 @@ type
|
||||
end;
|
||||
|
||||
|
||||
IX2InteractiveServiceContext = interface(IX2ServiceContext)
|
||||
['{82E69997-013D-4349-8060-B9F31B72CDF4}']
|
||||
procedure RunInteractive(AProc: TThreadProcedure);
|
||||
end;
|
||||
|
||||
|
||||
IX2Service = interface
|
||||
['{C8597906-87B8-444E-847B-37A034F72FFC}']
|
||||
function GetServiceName: string;
|
||||
|
Loading…
Reference in New Issue
Block a user