带有线程的“正在工作,请稍等”屏幕?

2024-01-12

也许,这对你来说很容易,但我正在努力开发一个项目(出于教育目的),该项目使用 TADSISearch 组件查询 adsi,持续了几天。当 TADSISearch 搜索 Active Directory 时,我试图在 Form2 上显示“正在工作,请稍候...”闪屏,其中包含一个男工动画 gif。虽然我根据自己的想法尝试了所有的可能性,但我没有成功。我尝试在线程中使用 TADSISearch,但线程在 ADSIsearch 完成之前终止。我认为 TADSISearch 不是线程安全的。你怎么认为?另外,我创建了 Form2 并使用线程来更新它的另一种方法,但动画 gif 停止了,而主窗体已经进行了 adsi 搜索。对于这些你有什么想说的吗?我怎样才能在 ADSISearch 工作时制作一个请等待屏幕并保持主表单响应。 Application.ProcessMessages 或计时器也不是一种方法。非常感谢您的阅读和回答。


图形用户界面应由主线程更新。您应该将搜索代码放入单独的线程中,当搜索器线程工作时,您的主线程可以显示动画以及“请稍候”消息。

当通过任何可用的同步技术完成搜索时,您的搜索器线程可以通知主线程。最简单的方法是在线程类中定义一个方法来停止用户界面中的动画,并将该方法传递给搜索器线程的 Execute 方法末尾的 Synchronize。

你的搜索线程代码将是这样的:

type
  TMyThread = class(TThread)
  private
    procedure NotifyEndOfThread;
  protected
    procedure Execute; override;
  end;

implementation

uses MainFormUnit;

procedure TMyThread.NotifyEndOfThread;
begin
  MainForm.ShowAnimation := False;
end;

procedure TMyThread.Execute;
begin
  try
    {Add your search code here}
  finally
    Synchronize(NotifyEndOfThread);
  end;
end;

你的主线程的代码将是这样的:

TMainForm = class(TForm)
...
private 
  FShowAnimation : Boolean;
  procedure SetShowAnimation(Value: Boolean);
public
  property ShowAnimation : Boolean read FShowAnimation write SetShowAnimation;
end;

procedure TMainForm.SetShowAnimation(Value: Boolean);
begin
  FShowAnimation := Value;
  if FShowAnimation then
    {Add animation code here}
  else
    {Stop animation}
end;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带有线程的“正在工作,请稍等”屏幕? 的相关文章

  • Ruby 1.9.3 多核?

    昨天我读了一些关于 ruby 中线程的内容 比如本文 http www engineyard com blog 2011 ruby concurrency and you 而我一般的理解是 除了一些像 JRuby 这样的实现 有所谓的全局解
  • 使用文本和进度条填充 DataGridView

    我正在创建一个多线程应用程序 其中每个线程将在我的应用程序中显示为一行DataGridView 我想要一个ProgressBar每行指示相应的线程进度 问题是 这可能吗 如果是这样 怎么办 我添加了类 DataGridView Progre
  • 多线程读取xml文件

    我进行了很多搜索 但找不到适合我的问题的解决方案 我编写了一个 xml 文件 其中包含电视节目的所有剧集信息 它大小 38 kb 包含大约 680 个变量的属性和字符串 起初 我只是在 XMLTextReader 的帮助下阅读它 它在我的四
  • 使用 volatile 关键字时出现内存一致性错误的示例?

    来自文档 使用易失性变量可以降低内存一致性错误的风险 但这是否意味着有时易失性变量无法正常工作 奇怪的是它的使用方式 在我看来 这是非常糟糕的代码 有时工作有时不工作 我尝试谷歌 但没有找到易失性内存一致性错误的示例 您能推荐一个吗 问题不
  • 如何使用线程使 Windows 服务长期运行

    我有一个 win 服务托管一些我需要保持长时间运行的工作流程 一个 WorkflowApplication 和一个 WorkflowServiceHost 因为 OnStart 要求它完成并返回操作系统 所以我有一个在线程池中的另一个线程上
  • Objective C 中最好的多线程方法?

    我正在开发一个 iPad 应用程序 目前正在努力寻找多线程的最佳方法 让我用一个简化的例子来说明这一点 我有一个包含 2 个子视图的视图 一个目录选择器和一个包含所选目录中所有图像缩略图的图库 由于 下载 和生成这些缩略图可能需要相当长的时
  • 如何在不同的QT线程中创建一个窗口?

    我有一个应用程序 其中每个线程 主线程除外 都需要创建自己的窗口 我尝试创建一个线程然后调用this gt exec in the run功能 然而 在我接到那个电话之前我就收到了一个错误 ASSERT failure in QWidget
  • VirtualStringTree 正确/推荐使用

    我已经使用 virtualstringtree 一段时间了 我将它用于两个不同的用途 第一个是用于选择 显示数据的普通树 第二个是作为网格来显示 SQL 语句的输出 我加载到树中的所有数据都来自数据库 对于树示例 我有一个 ParentId
  • C# 锁(mylocker) 不起作用

    我有很多 Web 服务调用 异步 在回调中 我会将结果绘制到 Excel 中 我想同步绘图方法 所以我使用以下内容 但是 从我在 Visual Studio 中追踪到 每次 lock locker 都会成功 并且有许多线程运行clearco
  • 在 ADO 查询 (mysql/MyConnector) 中使用参数

    今天我下载并安装了 MyConnector 这样我就可以通过 ADO 使用 Mysql 一切都安装好了 我可以与 ODBC 连接并从我的 delphi 环境进行连接 当我在运行时构建查询时 我收到一条错误消息 项目 Project1 exe
  • 如何让node.js中的线程休眠而不影响其他线程?

    As per 了解 Node js 事件循环 http blog mixu net 2011 02 01 understanding the node js event loop node js支持单线程模型 这意味着如果我向 Node j
  • 多线程调试技术

    我想知道是否有人知道多线程应用程序调试技术的一个很好的调查 理想情况下 我正在寻找基于案例的分析 死锁 饥饿 损坏的共享状态 Net 特定的或通用的 我不知道有哪篇文章或书籍可以满足您的需求 因此这是我从 12 年 Windows 多线程调
  • 如何使用 IdTCPClient 等待来自服务器的字符串?

    我的 IdTelnet indy 10 1 有问题 我无法以 Unicode 模式从服务器读取数据 现在我想用 IdTCPClient 编写 telnet 终端 服务器有时发送一行 有时发送越来越多的行 但发送之间没有固定的时间 现在我的问
  • 是否可以在虚拟树视图中选择多个列?

    我需要添加功能来复制节点和列的矩形选择 但我找不到任何方法来实际选择虚拟树视图中的多个列 除了 toFullRowSelect 之外 我只是错过了什么吗 如果没有 是否有一个后代具有类似网格的多列选择支持 经过一些测试后 我得出了以下结论
  • java:为什么主线程等待子线程完成

    我有一个简单的java程序 主线程 main 创建并启动另一个线程t class T extends Thread Override public void run while true System out println Inside
  • 线程数组?

    所以我在理解如何避免线程的顺序执行时遇到了问题 我试图创建一个线程数组并在单独的循环中执行 start 和 join 函数 这是我现在拥有的代码示例 private static int w static class wThreads im
  • 在该对象调用的事件期间销毁该对象

    我有一个按钮 它的 OnClick 事件调用一个销毁按钮的过程 但随后 线程 想要返回到 OnClick 事件 并且我遇到了访问冲突 我完全被难住了 您需要在按钮的所有代码执行完毕后销毁该按钮 执行此操作的标准方法是将用户定义的消息发布到表
  • C# 为所有对象订阅相同的事件处理程序是线程安全的吗

    我的项目中有一种情况 我连接到多个服务器并监听事件 每当从服务器接收到事件时 Handler 就应该将该事件添加到公共队列中进行处理 所有连接都应将接收到的事件添加到队列中 foreach var item in collection Co
  • 多线程 Web 应用程序

    我知道有很多情况都是在应用程序中使用多线程的好例子 但是什么时候最好在 net Web 应用程序中使用多线程 Web 应用程序几乎肯定已经由托管环境 IIS 等 实现多线程化 如果您的页面受 CPU 限制 并且想要使用多个核心 那么可以说多
  • 获取Windows下新线程/删除线程的通知

    创建 DLL 时 您可以在 DllMain 函数 DLL THREAD ATTACH DLL THREAD DETACH 中获取有关新线程 退出线程的通知 有没有办法在 非托管 可执行文件中从 Windows 获取这些或等效通知 是的 在您

随机推荐

  • 警告:“尝试更改冻结标题”

    我们的网站 www seeing org 最近更改了其标题 我们还决定增加其 Facebook 集成 包括利用以下对象属性og title 但是 在调试页面时 我收到以下警告 应修复的开放图警告 尝试冻结标题 改变 看来您正在尝试更改属性
  • 如何防止恶意使用我的套接字?

    我正在制作一个基于玩家能够邀请其他玩家参加聚会的网页 以及其他需要等待的事情 我有你们队伍中聊天 用户的基本发送 接收 更新 唯一的问题是 如何阻止某人坐在那里打开开发者控制台并继续 socket emit updateUsers Wein
  • Python 3.2 空闲与终端

    在 OSX 下的 python 3 2 中 如果我在 Idle 下运行 type sys stdin 我会得到一个奇怪的答案 如下所示 gt gt gt type sys stdin
  • 从 AVPlayer 中当前播放的视频中录制流音频

    很多类似的问题 但并不完全相同 我目前的代码设置是通过 AVPlayer 播放视频 我想要做的是以某种方式提取流视频的音频并最终与麦克风输入合并 使用 AVAudioMixer 想想卡拉 OK 应用程序 因此当用户播放录音时 它将仅播放视频
  • Express js 中允许多个 CORS 域

    如何以简化的方式允许 Express 中的 CORS 多个域 I have cors origin www one com app all function req res next res header Access Control Al
  • 如何释放 WebAssembly 中公开的 Rust 代码分配的内存?

    我有一个用 Rust 和 wasm bindgen 编写的 Web 应用程序 需要存储状态 状态存储如下 lazy static static ref ID TO DATA Mutex
  • UICollectionView PerformBatchUpdates:动画所有部分

    我正在写一个自定义UICollectionViewFlowLayout我注意到initialLayoutAttributesForAppearingItemAtIndexPath and initialLayoutAttributesFor
  • 变得致命:肮脏的存储库:有未提交的更改。使用 git ftp push 退出管道

    我有一个管道设置 可以自动处理 构建 CSS 文件 有时我在执行时会遇到此错误git ftp push 致命 肮脏的存储库 有未提交的更改 正在退出 bitbucket pipelines yml image php 7 2 7 pipel
  • 如何从 webviewclient 打开拨号器活动?

    我正在使用 webviewclient 打开 html 页面 html 页面有一个锚标记 当我单击锚标记时 应该启动我的电话拨号器活动 当我在外部浏览器 android 默认浏览器 中单击此锚标记时 它正在启动电话拨号器 但因为我正在使用
  • 在标题中使用 WordPress 短代码

    我有一些短代码可以在 WordPress 帖子或页面中正常工作 我可以在functions php中添加什么东西来使短代码能够在WordPress帖子标题中工作吗 您可以尝试在标题中添加过滤器functions php文件如 add fil
  • Control.Select() 和 Control.Focus() 有什么区别?

    在 WinForms 中 要将焦点设置到特定控件 我似乎总是最终调用Control Select and Control Focus 让它发挥作用 有什么区别 这是正确的方法吗 Focus 是实际设置焦点的低级函数 Select 是一个更高
  • 更新 Snowflake 中的混合嵌套对象

    我有一个雪花表 其中有一个变体列 raw 该表中的每一行都是复杂的 字典和数组 并且是嵌套的 多个层次结构 我想做的是能够更新specific某个数组中的项目 使用示例会更容易理解它 因此将其视为表中的一行 id 1234 x id y i
  • 最喜欢的性能调整技巧[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • RoboScript 无法在 Firebase Testlab 中单击“启用位置确定”按钮

    我正在尝试在 Firebase TestLab 上使用 RoboScript 测试基于 Google 地图的 Android 应用程序 默认情况下 TestLab 设备上禁用位置 要启用它们 我们需要模拟单击系统提示上的 确定 按钮 但这种
  • 为什么说TCP/IP协议族中的IP协议是无连接的?

    为什么IP被称为无连接协议 如果是的话 那么面向连接的协议是什么 Thanks 更新 1 20 21 2010 12 26 我认为 为了更好地回答我的问题 最好从物理上和逻辑上解释 连接 的实际含义 更新 2 9 59 AM 2 1 201
  • 如何反序列化具有重复键的 JSON 而不丢失任何值?

    我正在尝试反序列化一些具有重复键的 JSON 并且它们可能有任意数量 JSON 看起来像这样 abilities ability id 5134 ability level 3 ability id 5136 ability level 3
  • 带有自定义分隔符的 Angularjs 静态数字过滤器

    如何将 Angularjs 数字过滤器中的分隔符从逗号更改为自定义的分隔符 Now price number 回报1 000 00 我需要像这样1 000 00 我到底需要如何重写内置角度过滤器 您不必弄乱 Angular 源代码或将语言环
  • Selenium Grid 支持 Selenium 2?

    我读到计划在 2010 年年底为 Selenium 2 0 提供 Selenium Grid 支持 显然这还没有发生 有人知道这方面的任何更新吗 Selenium Grid 2 支持 Selenium 2 并向后兼容 Selenium 1
  • Elasticsearch 中的多个分组依据

    我需要使用 ES 中的 3 个字段进行聚合 分组 我可以在 1 个查询中执行此操作 还是需要对每一列使用构面 迭代 谢谢 从1 0版本开始ElasticSearch 新的聚合 API http www elasticsearch org g
  • 带有线程的“正在工作,请稍等”屏幕?

    也许 这对你来说很容易 但我正在努力开发一个项目 出于教育目的 该项目使用 TADSISearch 组件查询 adsi 持续了几天 当 TADSISearch 搜索 Active Directory 时 我试图在 Form2 上显示 正在工