TIdHTTPServer的OnCommandGet事件实际上是在INDY的工作线程中执行的。有什么办法可以让这部分代码在程序的主线程中执行?
解决方案 »
- idhttp出现的温和的关闭连接connection closed Gracefully
- 毕业设计要用,急啊,高手来看一下
- 求救:Delphi中,动态创建的窗口,遍历它的TEdit组件,设置所有TEdit组件的Enable属性为False
- 一字符串如下:sdff(为你)请问如何取(前的字符,
- 简单问题:怎样在DBimage中加自己想要的图片?
- 巨难问题。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
- 请问在delphi中,怎么判断一个字符串中是否包含特定的字母,如fat中包含a这个字母?
- 为什么没有人理我,快过年了,送分!
- 如何在DELPHI中动态改变端口
- 关于用delphi编写NT service的问题?
- 发布了个通信用的软件,有亮点(SQLite导出Excel以秒计),欢迎捧场。
- delphi和c#哪个开发应用程序更强?
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;const
WM_ON_HTTP_COMMAND = WM_USER + 100;type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
//响应WM_ON_HTTP_COMMAND消息
procedure OnHttpCommand(var message: TMessage); message WM_ON_HTTP_COMMAND;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}{ 此段代码可为线程调用 }
procedure SendOnHttpCommand;
var
r: Integer;
begin
r := SendMessage(Form1.Handle, WM_ON_HTTP_COMMAND, 0, 0); //<SendMessage阻塞执行的,3/4俩参数可以用来传递对象或者结构。
ShowMessage(IntToStr(r));
end;{ TForm1 }// TMessage = packed record
// Msg: Cardinal;
// case Integer of
// 0: (
// WParam: Longint; //<WParam、LParam用来传递结构对象等
// LParam: Longint;
// Result: Longint); //<用来传递返回值
// 1: (
// WParamLo: Word;
// WParamHi: Word;
// LParamLo: Word;
// LParamHi: Word;
// ResultLo: Word;
// ResultHi: Word);
// end;
procedure TForm1.OnHttpCommand(var message: TMessage);
begin
message.Result := 1;
end;end.
TThread.Synchronize(MyProc);
Procedure TMyThread.MyProc;
begin
///实际会在主线程中运行的代码
MainThreadDo(self.Param1, self.Param2);
end;
Procedure TMyThread.MainThreadDo(....);
begin
.....
end;
虽然结了,但我还想知道,INDY TcpServer ,UDPServer 出过什么莫名其妙的问题吗?是使用有问题还是VCL本身的问题?