delphi多线程参数传递问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi多线程参数传递问题相关的知识,希望对你有一定的参考价值。
我用delphi作了个PING函数,我想将Ping函数作成子线程,用这个Ping子线程定时与我网络其它机器进行Ping测试,哪个机器不通时,就告警,但不知道如何将IP地址传线子线程PIng,请高手指教,多谢!
参考技术A typepingThread=class(TThread)
protected
procedure execute; override;
end;
TForm1 = class(TForm)
edIp: TEdit;
Memo1: TMemo;
Timer1: TTimer;
procedure edIpChange(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
pThread:pingThread;
procedure pThreadDone(sender:TObject);
Private declarations
end;
implementation
$R *.dfm
procedure pingThread.Execute;
var
ip:string;
begin
FreeOnTerminate:=true;
ip:=form1.edIp.Text;
//调用你的ping函数
//ping(htonl(ip));
end;
procedure TForm1.pThreadDone(sender: TObject);
begin
memo1.lines.clear;
memo1.lines.add(edip.text+'unreachable.');
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
pThread.Create(false);
pThread.OnTerminate:=pThreadDone;
end;本回答被提问者采纳 参考技术B 建议给Thread类写一个property IP:String;
这样先把参数填好之后再启用其Excute
C# 多线程传递多个参数
http://www.cnblogs.com/lvdongjie/p/5416883.html
3. 方式三:采用lambda表达式
对于lambda表达式不熟悉的可以查看微软MSDN上的说明文档。此处假设你熟悉。因为在大多数使用委托的时候我们一般也可以用lambda表达式的。
View Code
using System; using System.Threading; namespace ThreadWithParameters { class Program { static void Main(string[] args) { string hello = "hello world"; //如果写成Thread thread = new Thread(ThreadMainWithParameters(hello));这种形式,编译时就会报错 Thread thread = new Thread(() => ThreadMainWithParameters(hello)); thread.Start(); Console.Read(); } static void ThreadMainWithParameters(string str) { Console.WriteLine("Running in a thread,received: {0}", str); } } }
以上是关于delphi多线程参数传递问题的主要内容,如果未能解决你的问题,请参考以下文章