问题标签 [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.
visual-studio-2015 - Visual Studio 2015:在多线程单元中使用 MSTest 运行测试
我找不到在 Visual Studio 2015 中为 MSTest 执行此操作的方法。如何为所有正在运行的测试指定公寓状态为 MTA?
c# - 从 WebApi 调用 STA COM 对象
从 MTA 线程上下文(.Net WebApi 请求)调用 C# 的围绕 STA 远程应用程序类型库的 Runtime Callable Wrapper 是否安全(从线程模型和公寓的角度来看)?
我应该将服务器 STA 应用程序更改为 MTA 还是 RCW 将在幕后处理这些机制?
java - 如何理解 MTA 的实时 gtfs 数据馈送
到目前为止,我已经填写了开发人员 API 密钥的MTA 在线注册表单。然后在我的 android 项目中,我从Google 的 github 存储库之一实现了 gtfs 实时绑定依赖,
使用他们的 Java 类,我尝试使用以下代码从 MTA 提供的链接中打印出所有 gtfs 数据,
但是,我现在无法解释打印出来的数据。我知道有来自http://web.mta.info/developers/developer-data-terms.html的静态数据馈送,我用它来解释一些数据。这是打印出来的旅行更新之一,
我了解trip_id、start_date 和stop_id 等部分内容。但是诸如 trip_id、time 和 1001 之类的部分我仍然不确定,静态提要中的文本文件并不能很好地解释它们。
go - CoInitializeEx(COINIT_MULTITHREADED) 和使用 WMI 的 Goroutines
我们有一个用 Go 编写的监控代理,它使用许多 goroutine 从 WMI 收集系统指标。我们最近发现,当 go 二进制文件在 Server 2016 或 Windows 10(也可能在其他使用 WMF 5.1 的操作系统上)运行时,该程序正在泄漏内存。在创建了一个最小的测试用例来重现该问题之后,似乎只有在您对 ole.CoInitializeEx 方法进行大量调用时才会发生泄漏(WMF 5.1 中可能发生了一些变化,但我们无法使用 python comtypes 包重现该问题在同一系统上)。
我们在我们的应用程序中将 COINIT_MULTITHREADED 用于多线程单元(MTA),我的问题是:因为我们从各种 goroutine 发出 OLE/WbemScripting 调用,我们需要在启动时调用 ole.CoInitializeEx 一次还是在每个 goroutine 中调用一次?我们的查询代码已经使用runtime.LockOSThread来防止调度程序在不同的 OS 线程上运行该方法,但是 MSDN 上关于CoInitializeEx的注释似乎表明它必须在每个线程上至少调用一次。我不知道有什么方法可以确保新的 goroutine 在已经初始化的 OS 线程上运行,因此多次调用 CoInitializeEx 似乎是正确的方法(并且在过去几年中运行良好)。
我们已经重构了代码以在专用的后台工作程序上执行所有 WMI 调用,但我很想知道我们的原始代码是否应该在启动时只使用一个 CoInitializeEx 而不是每个 goroutine 一次。
c# - 来自 MTA 的 C# 继承讨论
我最近做的一个 C# MTA 考试的问题引起了很多讨论:
您有一个名为 Glass 的类,它继承自名为 Window 的基类。Window 类包括一个名为 break() 的受保护方法。
您应该如何调用 Glass 类的 break() 方法实现?
A. Window.break();
B. Glass.break();
C.this.break();
D.base.break();
谁能给我一个可靠的答案和合理的答案?
javascript - 从嵌套的 JSON 中获取价值
我一直在尝试通过以下 JSON 数据和 console.log 解析特定值的 stop_ids。因此,当我选择停止 ID“L26S”时,控制台将记录每个停止时间发生在 JSON 中的实例。我想要的停止时间在 trip_update.stop_time_update.arrival.time.low
我尝试使用以下方法失败(提要是我的 JSON 文件的名称),我相信我在正确的道路上,但我不知道如何继续。任何帮助,将不胜感激。
com - 免注册 COM 不能很好地处理单线程对象。封送期间丢弃的激活上下文
我正在通过 JNI 将基于 COM/CLI 的库集成到基于 Java 的应用程序中(是的,这有点乱)。在大多数情况下它都在工作,但是当谈到激活上下文如何与单线程 COM 对象交互时,我遇到了一些障碍。我的情况可以用下面的代码片段来概括。
库和应用程序的部署迫使我使用免注册 COM。此外,由于主应用程序是用 Java 编写的,因此我无法真正将清单资源附加到 exe 文件或类似文件中。因此,我需要使用 COM 中的激活上下文机制来允许库查找其 COM 类。此外,库本身是单线程的,因此需要 STA 才能运行。但是,我的应用程序将从各种线程调用库。
据我了解,如果要创建的对象是单线程的,那么第一次从 MTA 线程调用 CoCreateInstance 时,COM 将启动一个新的“默认 STA 线程”。然后在默认 STA 中创建实际对象,然后 CoCreateInstance 的返回值将是一个代理对象,它将方法调用来回编组到默认 STA。这一切都很好,这就是我希望它的工作方式。
当我的代码不是第一个导致默认 STA 线程启动的代码时,就会出现我的问题。似乎即使对象创建被封送到默认 STA,当前激活上下文也不是。默认 STA 卡在创建时处于活动状态的激活上下文中。这对我来说意味着如果我不是第一个导致默认 STA 被初始化的人,我对 CoCreateInstance 的调用将失败,因为默认 STA 不知道我的激活上下文。这是一个大型企业应用程序,我不能确定我的代码会第一个调用 CoCreateInstance,即使我可以,这对我来说似乎也是一个脆弱的解决方案。
因此,我需要以下之一:
一种将激活上下文编组到默认 STA 的方法。
一种使用正确激活上下文启动新 STA 的方法,我的对象将在其中存在,并且 CoCreateInstance 和方法调用被来回编组到此 STA 而不是默认 STA。
重构我的集成以确保对有问题的库的所有调用都来自我可以控制的单个 STA,以避免编组步骤。这是我的备用计划,但我觉得必须有更简单的方法。
javascript - MTA 和 HTML 登录并记住我
我正在尝试解决一个 HTML 输入栏,这样我就可以记住 MTA 服务器用户名和密码登录在这里可用:http ://ru1n.eu/index.php?/topic/3-rel-login-panel / 我找到了一些用于记忆的 javascript,但我不知道如何登录以将其合并
linux - 如何在 Linux 中配置 Send-Only 邮件服务器,它将接受并为同一网络中的多个应用程序/Web 服务器执行电子邮件传递
我在同一子网/网络中有一台 Web 服务器、一台中间件服务器和一台后端应用程序服务器。所有这三个服务器都需要将通知警报电子邮件发送到多个电子邮件 ID,例如 GMAIL、Yahoo、Outlook 等。为此,我必须在每个服务器上分别配置 sendmail 服务器。
如果我可以部署一个小型专用 sendmail 或 postfix 服务器来接受并为所有三台服务器执行电子邮件传递,我是否可以在中间件代码、Web 服务器配置和后端将邮件服务器 IP 地址更改为此专用邮件服务器 IP应用程序,以便这些服务器能够使用邮件服务器来处理每封传出的通知或警报电子邮件?
请检查并指导我如何配置它。
提前致谢!
com - STA COM 组件上的方法调用被挂起
我们有一个使用 COM dll 的 .NET 应用程序,该组件的 ThreadingModel 是“Appartment”
应用程序总是挂起调用 COM 接口方法。
DebugDiag 分析说明如下
终结器线程可能正在尝试释放 STA COM 组件的实例,并且它被卡住等待 STA 线程变得可用。若要解决此问题,请调用 Marshal.ReleaseComObject 以确定性地(立即)清理您在代码中使用的所有单元线程 COM 组件的引用,而不是等待终结器线程稍后执行此操作。
在推荐部分,它建议将线程模型更改为“两者”,我这样做并且工作正常,但这无法完成,因为我们有一个 UI,并且根据我们的设计不建议这样做。
知道我们的 .NET 应用程序代码中的哪些更改可以解决此问题。
堆栈跟踪 有两个线程 2 和 65 试图调用线程 45 上的 COM 对象,我猜是线程 2 的 STA 线程调用堆栈
线程 65 的调用栈