多线程引用问题

baody8 2018-10-29 03:19:31
主线程Unit1.pass的Label1
线程对像Unit2.pass,调用Label1控件,需要引用use Uniti1.pass .

那么问题来了,我主线程里面也引用了,use Unit2.pass线程对像,这样相互引用,容易怕出问题,有啥解决方法不,或者说在Unit2.pass 线程里面,不使用引用,怎么调用主线程控件Label1
...全文
166 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
BlueStorm 2018-10-30
  • 打赏
  • 举报
回复
Terminate; 改为 if not Terminated then Terminate;
BlueStorm 2018-10-30
  • 打赏
  • 举报
回复

unit Unit2;

interface

uses
  System.Classes, Vcl.StdCtrls, System.SysUtils;

type
  TWork = class(TThread)
  private
    FLabel: TLabel;
  protected
    procedure Execute; override;
  public
    constructor Create(ALabel: TLabel);
  end;

implementation

constructor TWork.Create(ALabel: TLabel);
begin
  inherited Create(False); //线程启动后立即运行
  FreeOnTerminate := True;  //线程终止后自动释放内存
  FLabel := ALabel;
end;

procedure TWork.Execute;
var
  I: Integer;
begin
  for I := 1 to 1000000 do
  begin
    if not Terminated then
    begin
      Synchronize(procedure   //子线程不能直接操作VCL
                  begin
                    FLabel.Caption := IntToStr(I); 
                  end);
      Sleep(1);
    end
    else
      Break;
  end;
  Terminate;
end;

end.


//调用方法
   Work := TWork.Create(Label2);
p47655255 2018-10-30
  • 打赏
  • 举报
回复
不引用应该没法直接使用,另外线程操作vcl要用Synchronize()。不过你可以用消息来代替。
lyhoo163 2018-10-30
  • 打赏
  • 举报
回复
线程中不宜对发VCL进行操作,否则它不响应。
  • 打赏
  • 举报
回复
对,Encoding类在.net 1.1中就有了
D7之后,由于Borland的经济形势恶化,加上被ms忽悠搞.net版本,Delphi确实损失了很多年的发展时机,一直到D2009才比较有起色。
BlueStorm 2018-10-30
  • 打赏
  • 举报
回复
应该还有其他也是模仿的,例如TEncoding...
  • 打赏
  • 举报
回复
引用 8 楼 BlueStorm 的回复:
Delphi的较新版本,似乎抄袭了C#不少东西。


匿名方法、并行库确实是模仿c#(并行库是.net框架的一部分),Operator Overloading、Class/Record Helpers、Generics则与c#的实现差异较大。
  • 打赏
  • 举报
回复
我炒,CSDN大乱~~~

BlueStorm 2018-10-30
  • 打赏
  • 举报
回复
Delphi的较新版本,似乎抄袭了C#不少东西。
  • 打赏
  • 举报
回复
使用线程类,使用同步都是很早以前老版本中的用法了,现在当然也可以使用,但是用异步调用+匿名方法可以很简洁,节省大量代码。
baody8 2018-10-29
  • 打赏
  • 举报
回复
引用 1 楼 DelphiGuy 的回复:
母鸡你在说什么~~~



有没有啥方法不引用,直接调用Label控件
  • 打赏
  • 举报
回复
母鸡你在说什么~~~

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧