最近我升级了一个库以使用.NET6和.NET7,有一些代码将单元状态设置为STA,但我发现设置单元状态是Windows独有的事情.为了让编译器满意,我们将代码更改为
#if NET472
_thread.SetApartmentState(ApartmentState.STA);
#else
if (OperatingSystem.IsWindows())
_thread.SetApartmentState(ApartmentState.STA);
#endif
但这让我想知道,如果这段代码最终在Linux或MacOS平台上运行,一切都会好起来吗?我对单线程单元和多线程单元在Windows中的作用知之甚少,除非你有一个线程应该是单线程运行的,你应该使用STA.我更不明白这些概念是如何转化到Linux和MacOS上的,以及这是否重要.这些操作系统的行为是否总是像它是STA一样,或者它总是像它是MTA一样,或者它根本不重要,因为它的处理方式如此不同,甚至没有意义进行比较,但它仍然可以工作.
我们目前还没有在Linux或MacOS上运行这个库的任何即时用例,但也许有一天我们会这样做,但正因为如此,这可能会在很长一段时间内未经测试.