问题标签 [mta]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 为什么 Task.Delay 会破坏线程的 STA 状态?
介绍
这是一个很长的问题!您将在开始时找到有关问题的一些背景,然后是代码示例,这些示例已被简化以用于表示和之后的问题。请按照您认为适合您的任何顺序阅读!
背景资料
我正在为与 STA COM 通信的应用程序编写概念验证部分。这部分应用程序需要在单线程单元 (STA) 上下文中运行,以便与所述 STA COM 通信。应用程序的其余部分在 MTA 上下文中运行。
当前状态
到目前为止,我想出的是创建一个包含循环的通信类,在 STA 中运行。while
需要中继到 COM 对象的工作从外部通过ConcurrentQueue
. 然后工作项在 while 循环中出列并执行工作。
代码上下文
通讯类
这是一个static
类,包含一个循环,旨在在 STA 状态下运行并检查是否需要由 COM 完成某些工作并将工作分派给处理程序。
工作指挥
此类描述需要完成的工作以及可能提供的任何参数。
工作单位
此枚举定义了 COM 可以执行的各种任务。
所有者
这是拥有或生成Communication
COM 的类的示例,并且是对应用程序其余部分使用的抽象Communication
。
问题
现在,看一下Communication.StartCommunication()
方法,更具体地说是这部分:
如果此行替换为以下内容:
在检查最后一站 -Communication.InternalInitializeCOM()
线程的公寓似乎是MTA。
但是,如果延迟逻辑更改为
该CommunicationInternalInitializeCOM()
方法似乎在STA状态下执行。
检查由Thread.CurrentThread.GetApartmentState()
.
问题
谁能向我解释为什么会Task.Delay
破坏 STA 状态?还是我在这里做其他错误的事情?
谢谢!
感谢您抽出所有时间阅读问题!祝你有美好的一天!
python - 使用 Python 拉取 Mimecast 日志
我希望有人经历过这个,并希望有一个可以工作的 Python 脚本。我一直在尝试从 Mimecast 中提取 MTA 日志。到目前为止,我已经尝试了以下网站的代码:
https://github.com/JoshuaSmeda/mimecast_log_collector
https://github.com/bsdkid/mimecast-api-class/blob/master/get-TTP.py
我得到的错误是
SSLError: HTTPSConnectionPool(host='api.mimecast.com', port=443): Max retries exceeded with url: /api/login/discover-authentication (由 SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] 证书验证引起失败 (_ssl.c:645)'),))
我还拥有所有必要的凭据,例如用户(帐户)、密码、app_id、app_key、access_key 和 secret_key。不幸的是,没有什么对我有用。
任何帮助深表感谢。
谢谢
lua - #MTASA 服务器错误:尝试索引零值
我真的不知道这里有什么问题。这是我得到的错误:
s_interior_admin.lua:944:尝试索引本地“内部”
这是我的代码:
c# - VS 2019 在 MTA 中运行 MSTest
我们有一个带有ThreadPool
和的遗留应用程序WaitHandle
。我们想针对它使用MSTest编写单元测试。我们遇到了一个问题,默认情况下 MSTest 在 STA(单线程单元)模式下运行,并且测试抛出以下异常,
System.NotSupportedException:不支持 STA 线程上的多个句柄的 WaitAll。在 System.Threading.WaitHandle.WaitAll 的 System.Threading.WaitHandle.WaitMultiple(WaitHandle[] waitHandles,Int32 毫秒超时,布尔 exitContext,布尔WaitAll)在 System.Threading.WaitHandle(WaitHandle[] waitHandles,Int32 毫秒超时,布尔 exitContext)在 System.Threading.WaitHandle。 WaitAll(WaitHandle[] waitHandles,TimeSpan 超时,布尔型 exitContext)
email - fetchmail /bin/sh: 0: 无法打开日期
我从 bash shell 运行它:
它在日志中说
/bin/sh: 0: 无法打开日期
..并终止。
php - 电子邮件中 .eml 文件的 MIME 类型是什么
我想将 MTA 报告(未发送的退回邮件)附加到电子邮件中,但正确的 MIME 类型是什么?
我获取 MTA 报告的全文
但是附加的 .eml 文件的正确 MIME 类型是什么?
已经尝试过message/rfc822
,但是当您在 Thunderbird 中打开文件时,弹出窗口是空的。也尝试过text/plain
,但附件以纯文本形式打开。我想将附件 .eml 作为电子邮件打开
当您收到 MTA 报告(未送达)时,退回邮件始终作为附件转发
我想将完整的 MTA 报告 + 转发的退回邮件附加到新邮件中
c# - 您应该使用以下哪个 SQL 语句?
我是 C# 和 stackoverflow 的新手。我正在审查我在 MTA 认证准备测试中弄错的问题。谁能帮我理解正确答案是什么以及为什么?谢谢!
server - 如何在房间里没有命令的情况下使 mta 服务器状态?
像这样在此处输入图像描述
常量 Gamedig = 要求(“gamedig”);module.exports = { name: "status", run(client, message, args) { Gamedig.query({ type: "mtasa", host: "94.23.68.73", port: "22003", }) message.edit (msg) msg.then((state) => { if (state["raw"]["numplayers"] === 0) { let embed = new Discord.MessageEmbed() .setColor("RED") .setTitle (state["name"]) .addField("Status:", "Online", true) .addField("Players:", state["raw"]["numplayers"] + "/" + state["maxplayers "], true ) message.channel.send({ embed }); } else { let embed = new Discord.MessageEmbed() .setColor("RED") .setTitle(state["name"]) .addField("Status ", "在线", true) .addField("玩家", state["raw"]["numplayers"] + "/" + state["maxplayers"], true ) message.channel.send({ embed }); } }) .catch((error) => { let embed = new Discord.MessageEmbed() .setColor("RED") .setTitle(state["name"]) .addField("Status:", "Offline") .addField("Players", state["raw"]["numplayers"] + "/" + state["maxplayers"], true ) message.channel.send({ embed }); }); }, }; ]["numplayers"] + "/" + state["maxplayers"], true ) message.channel.send({ embed }); }); }, }; ]["numplayers"] + "/" + state["maxplayers"], true ) message.channel.send({ embed }); }); }, };
multithreading - STA/MTA 与公寓/空闲线程与 UI 线程/工作线程是什么?为什么改名?
我正在阅读Dale Rogerson 的Inside COM,它使用术语单元线程和自由线程来描述不同类型的 COM 线程。
他还澄清了这些直接对应于UI 线程和工作线程:
COM 使用相同的两种类型的线程,尽管 COM 对它们有不同的名称。COM 没有调用用户界面线程,而是使用术语单元线程。使用术语自由线程而不是工作线程。[...]
但是,许多其他文档都提到了STA和MTA。“单线程公寓”和“多线程公寓”。
- “公寓/免费线程”和“STA/MTA”是否意味着不同的东西?Rogerson 的书 (1997) 是否不再反映 COM 的线程模型?
- 为什么名称变了?