TIdNotify 和 TIdSync 有什么区别?

2024-03-09

我无法理解 IDSYNC 和 IDNOTIFY 之间的真正区别,同步/异步意味着什么 关于我写的代码行?

procedure TForm1.IdTCPServerExecute(AContext: TIdContext);
begin
    ....
    DoSomeThing (TIDNotify)    ....

    DoSomethingOther(TIDsync) ......

 end; 

为什么我不能确定这两行代码都在 TCPServer 执行函数中执行? 是否仅存在几行代码在我的 TIDSynfunction 中未执行的风险,或者如何解释死锁?


TIdSync 和 TIdNotify 实现相同的目标 - 在主线程上下文中执行一段代码 - 但它们以不同的方式实现。

TIdSync是同步的。这TIdSync.Synchronize()方法会阻塞调用线程,直到主线程调用TIdSync.DoSynchronize()方法并且它已经退出。如果出现以下情况,可能会发生死锁TIdSync.Synchronize()当主线程关闭该服务器时,在服务器事件处理程序中调用。这是因为主线程被阻塞,等待服务器终止其线程。但线程被阻塞等待主线程处理同步请求。

TIdNotify是异步的。这TIdNotify.Notify()方法添加了TIdNotify.DoNotify()方法进入后台队列并立即退出,因此调用线程不会被阻塞。主线程调用TIdNotify.DoNotify()闲暇时的方法。这种情况下不存在僵局。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TIdNotify 和 TIdSync 有什么区别? 的相关文章

  • Delphi 拼写检查器

    您好 我正在寻找一个与 Delphi 7 2010 一起使用的免费拼写检查器 任何人都可以给我一个指向吗 我想添加我们在 SynProject 编辑器中使用的 HunSpell 库 它包含在该 GPL 工具的源代码中 http synops
  • TOAuth2Authenticator:如何刷新过期的令牌?

    我一定是错过了什么 我一直在尝试使用新的 对我来说是新的 来自delphi xe2环境 TOAuth2Authenticator TRESTClient TRESTRequest TRESTResponse组件来刷新过期的OAUTH2令牌
  • 如何远程获取系统的网络共享和连接?

    我正在寻找一种远程获取类似于以下控制台应用程序的信息的方法 net use 净份额 网络统计 ano 但是 我需要能够在系统上运行第三方应用程序的情况下执行此操作 这有效地排除了使用 psexec 远程执行命令 因为 psexec 将作为服
  • 如何使用 NPAPI 将 Delphi VCL 表单嵌入到 HTML 页面中?

    使用 Delphi 编写 ActiveX 插件的方法有很多 但 ActiveX 本身在 IE 以外的浏览器中存在很多限制 所以我在想 如何编译一个 NPAPI 格式的插件 原生兼容 Chrome Firefox 该插件的目的是允许将 VCL
  • 读写文本文件的最佳方法

    我正在使用最新版本的 Lazarus IDE 并且我有一个Memo1在我的 TForm1 上 我必须加载一个文本文件Memo1然后编辑备忘录的每一行 我使用Memo1 Lines Strings i 最后 我必须将编辑后的备忘录保存在特定路
  • Delphi:平滑折叠/展开形式

    需要你的帮助 我一直在寻找 我在德尔福西雅图 试图平滑调整表单底部的大小 就我而言 调整大小 只是有点折叠 展开 如下所示 我怎样才能意识到这一点 我尝试过使用 TTimer procedure TForm1 Timer1Timer Sen
  • 新的 Delphi Rad Studio XE2 中的 FireMonkey (FMX) 包含哪些功能的详细信息?

    我听说德尔福全新 Rad Studio XE2有一个东西叫做火猴这将允许相同的代码构建 Windows 32 Windows 64 和MacOS应用程序 如果这是真的 那么这是巨大的 在哪里可以获得有关 FireMonkey 的技术文档 E
  • NvCplGetThermalSettings 返回 false

    问题 您好 我正在尝试使用 Delphi 获取 nividia gtx 980 的 GPU 温度 我看过C 问题 他的解决方案是不使用nvcpl dll 我认为这不是正确的解决方案 因为 nivida 有完整的文档说明如何处理 API 见下
  • 是否可以确定 dbEdit 中的文本是否比可见文本长?

    在某些表单上 我的 dbEdits 有时不够宽 无法显示其字段可能包含的所有文本 对于他们我有以下代码 procedure Tgm12edLots dbeLotNameMouseEnter Sender TObject begin with
  • 检测 TWebBrowser 文档中的活动元素何时发生变化

    是否有任何我可以挂钩的事件来检测网页上的活动元素何时发生变化 例如 当用户聚焦编辑框时 我知道我可以检查计时器中的活动元素 但如果可能的话我宁愿避免这种情况 这并不是对您的问题的完整答案 但希望能帮助您完成大部分工作 对于通过类似的 q 到
  • 在设计时存储“记录数组”的最佳方式

    我需要在设计时存储一组数据 以便在运行时构造一组组件的内容 像这样的事情 type TVulnerabilityData record Vulnerability TVulnerability Name string Description
  • Firemonkey 移动应用程序和远程 MySQL

    我正在使用 Delphi XE5 并且我已经创建了基本的 Firemonkey 移动应用程序 Delphi 我想连接到远程 MySQL 数据库 我应该使用哪一个数据库管道 FireDAC DBExpress 等 您可以使用标准 TSQLQu
  • Delphi XE2 中的 TDataModule.ClassGroup 伪属性到底有什么作用?

    我尝试将一个组件从一个数据模块复制并粘贴到 Delphi XE2 中的另一个数据模块中 该组件是一个 Fast Report 数据源链接组件 数据模块是全新的 刚刚在 XE2 中创建 其他人也遇到了同样的问题并报告了质量中心为106369
  • TEdit onclick 全选?

    每当用户单击 TEdit1 或单击选择其中的某些文本时 如何选择 TEdit1 的所有文本 执行超出默认行为的任何操作都可能非常危险TEdit控制 您的用户知道标准 Windows 控件的行为方式 任何偏离此的行为都可能导致混乱 默认情况下
  • 线程关闭期间 Win64 Delphi RTL 中的内存泄漏?

    很长一段时间以来 我注意到我的服务器应用程序的 Win64 版本存在内存泄漏问题 虽然 Win32 版本工作正常 内存占用相对稳定 但 64 位版本使用的内存却定期增加 可能 20Mb 天 没有任何明显的原因 不用说 FastMM4 没有报
  • 在 Delphi 7 中使用 TScreen

    我的 Delphi 7 应用程序显示 Screen DesktopWidth Screen DesktopHeight Screen Monitors 0 Width Screen Monitors 0 Height 并且 如果选择了第二台
  • 如何修复 Delphi Prism ASP.NET 错误:“解析器错误消息:‘Oxygene’不是受支持的语言”

    我在 Delphi Prism 中编写了一个 ASP NET Web 应用程序 不是网站 在我的开发机器上一切正常 但是当我将其安装在测试服务器上时 出现以下错误 Server Error in MyApp Application Pars
  • 使用 GdiPlus 卸载 DLL 时程序挂起

    我有一个加载 DLL 的应用程序 它使用德尔福 GDI 库 http sourceforge net projects delphigdiplus 该应用程序在卸载 DLL 时挂起 调用免费图书馆 https msdn microsoft
  • delphi分组框标题颜色变化

    我正在使用 BDS 2006 想知道您是否可以使用项目中存在的 XPmanifest 更改组框和单选按钮组标题的颜色 因为它始终是蓝色 唯一的方法是重写 Paint 方法TGroupBox http docwiki embarcadero
  • 调用泛型类型的方法?

    为什么下面的代码在 Delphi XE 中会产生错误 unit UTest interface type TTest class public procedure Foo

随机推荐

  • 双屏 HDMI 输出编程

    在我的搜索中 我发现 Android SDK 目前不支持控制 HDMI 端口活动和处理 HDMI 输出 尽管像摩托罗拉这样的某些设备制造商 不知道是否还有其他制造商也这样做 提供了 API 以实现更好的控制 下面是其中两个的链接 其中双屏链
  • 列出 Android 手机中所有已安装或支持的语言

    如何在 android 中以编程方式获取 语言和输入设置 下列出的所有已安装或支持的语言的列表 我已经使用了 Resources getSystem getAssets getLocales 但它只给了我该语言的代码 如 en en us
  • 如何将 Tomcat 嵌入到 Spring Framework MVC 应用程序中?

    我已经创建了所需的配置 控制器类 但我不清楚应该如何编排这些类来运行 tomcat 实例 我知道对于 Spring Boot 来说 这是使用 SpringApplication run 的问题 但我正在尝试探索 Spring Boot 之前
  • 在解决方案文件上调用自定义 MSBuild 目标

    我有一个解决方案文件 我的解决方案 sln 其中有一个项目 我的项目 vcxproj 我想执行一个自定义目标 我的自定义目标 通过解决方案在我的项目上 它看起来像这样 msbuild MySolution sln t MyCustomTar
  • 可空对象必须有一个值

    异常描述中有一个悖论 可空对象必须有一个值 这就是问题 我有一个DateTimeExtended班级 具有 DateTime MyDataTime int otherdata 和一个构造函数 DateTimeExtended DateTim
  • 契约异步和同步代码

    有很多问题询问是否混合异步和同步代码 大多数答案都表示 为异步方法公开同步包装器以及为同步方法公开异步包装器都是一个坏主意 然而 没有一个答案解决了必须混合异步和同步代码的特定场景 以及如何避免因此而出现的常见陷阱 请参见以下示例 clas
  • 如何设置Winsock UDP套接字?

    我想创建一个仅向客户端发送数据的 Winsock UDP 套接字 我希望内核为我选择一个可用的端口 另一方面 我想指出要使用哪个本地 IP 因为我正在运行一些网卡 我尝试过梳理迷宫般的套接字选项 以及将套接字地址中的端口绑定设置为 0 但均
  • 如何与Azure进行角色间通信?

    我完全不明白如何获得 Azure 角色 无论是 Web 角色还是辅助角色 来与另一个 Azure 角色进行通信 我查看了服务总线中继 其速度令人难以置信 在调试时将数据从一个角色获取到另一个角色大约需要 6 个小时 当我通过在云中运行的 W
  • 转置数据框

    有一种情况我有 gt sample df lt data frame id c 14129 29102 2191 2192 1912 color c blue red green purple blue day c monday wedne
  • 在 WooCommerce 中隐藏缺货相关产品

    在 WooCommerce 中我想隐藏缺货产品来自相关产品在单个产品页面中 是否可以 任何曲目都受到赞赏 这里给出的答案都不适合我 我相信woocommerce output related products args提到的过滤器不接受me
  • 持有自身引用的类

    浏览标准草案 n3242 我在第 9 2 条中发现了这句话 强调我的 非静态 9 4 数据成员不得具有不完整的类型 在 特别是 类 C 不应包含类的非静态成员 C 但是它可以包含一个指针或参考到类的对象 C 由此我认为定义一个这样的类是可以
  • 识别短文本的语言? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个文章列表 每篇文章都有自己的标题和描述 不幸的是 从我使用的来源来看 无法知道它们是用什么语言编写的 此外 文本并非完全用一种
  • 使用Matlab导入另一个.m文件

    我对 Matlab 还很陌生 我在 m 文件中定义了一个函数 我想在另一个 m 文件中的 m 文件中使用该函数 并且我想从命令窗口运行最后一个 m 文件的内容 我应该如何去实现这个目标 EDIT 为了澄清起见 我有一个功能a inside
  • 将时间和日期与此格式 HH.MM mm/dd/yyyy 进行比较。

    是否可以像这样使用军事时间和日期的格式进行比较HH MM mm dd yyyy 例如 1 08 25 06 10 2014 gt 23 18 06 09 2014 结果为 True 因为第 10 天大于第 09 天 2 23 25 06 1
  • Django Include() 在 urls.py 中与两个应用程序

    我相信这是一个简单的问题 但我很难弄清楚为什么这不起作用 我有一个 django 项目 并且添加了第二个应用程序 销售 在第二个应用程序之前 我的 urls py 只是将所有内容路由到第一个应用程序 图表 如下所示 urlpatterns
  • SIGABRT:前提条件失败:导入的节点在读取其值之前已被删除

    自从beta 5 of Xcode 11启动后 我不得不更新代码 你知道该怎么做 然而 有一个奇怪的运行时错误在更改中幸存下来 我无法弄清楚为什么会发生这种情况 我开始尝试将其限制在我的原始代码中 但令人惊讶的是 它也发生在我设法想出的最简
  • 单击时滚动到 div,最后循环

    我想做的是在屏幕右下角引入一个按钮 用户可以单击该按钮滚动到下一个 部分 div 一旦到达 html 中的最后一个 div 它应该循环回到第一个 divsection div 我提出的解决方案是 当页面最初加载时 它会收集类名称为 sect
  • Flask-SQLAlchemy ssl 连接与 AWS RDS 错误

    我正在尝试通过 ssl 将 Flask 应用程序 mysql 连接与 AWS RDS 连接 当我尝试像这样使用 mysql 客户端时它可以工作 mysql u user h myrds rds amazonaws com p ssl ca
  • Jquery - 从 div 读取所有类

    我试图通过以下方式从 HTML 元素读取所有类名 但它不起作用 HTML div class fff aaa ccc hello world div JS if test attr class Read classes var all cl
  • TIdNotify 和 TIdSync 有什么区别?

    我无法理解 IDSYNC 和 IDNOTIFY 之间的真正区别 同步 异步意味着什么 关于我写的代码行 procedure TForm1 IdTCPServerExecute AContext TIdContext begin DoSome