雅虎有多个游戏室。例如,让我们选择国际象棋对于国际象棋,他们有多个房间,每个房间都有多张桌子
有多个房间的原因是什么?
1个房间和10.000张桌子的服务器会比10个房间和1000张桌子的服务器慢吗
如果是,请让我了解原因。我知道他们使用插座。“服务器”可能会在一个房间内运行相同的插座。是什么让你认为每个房间都运行在同一台服务器上?通常,拆分服务是在多个盒子之间分散负载的一种简单方法。我认为从10000个表格列表中选择一个“房间”将证明是一种糟糕的用户体验,并减少在房间选择过程中发送回客户机的数
我想将一些文件解析操作与powershell中的网络活动并行化。用谷歌快速搜索,
开始线程看起来像一个解决方案,但是:
术语“启动线程”不能识别为cmdlet、函数、脚本文件或可操作程序的名称。请检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试
我试着开始工作时也发生了同样的事情
我还试着摆弄一下
所以,我认为最好是知道我在使用start线程时做错了什么,因为它似乎适用于其他人。我使用v2.0,不需要向下兼容。Powershell没有名为Start Thread的内置命令
但是,V
我试图使用一个单独的线程调用我的静态函数,我的函数中有类似于this->listBox1->Items->Add(s)的东西。编译器显示我不能在静态函数中使用这个。我试图使我的函数非静态(即removestatic关键字),但当我这样做时,编译器再次显示两个错误:
错误2错误C3350:“System::Threading::ThreadStart”:委托构造函数需要2个参数c:\users\ahmed\documents\visual studio 2010\projects\testscan
我使用admob sdk在iPhone 3.1.3(第一代iPhone)上运行该应用程序。虽然并非一直如此,但我最近开始出现这个错误,这是我以前从未见过的
<Warning>: bool _WebTryThreadLock(bool), 0x3c3840: Tried to obtain the web lock from a thread other than the main thread or the web thread. This may be a result of ca
我有52个来自web URL的图像。我想在多线程过程中显示这些图像
谁能告诉我这是怎么可能的
我实现了下面的代码,但它不工作
for (int i = 0; i <total_data; i++) {
GetBitmapClass getBitmapClass=new GetBitmapClass(i, image_path[i]);
if(Thread.activeCount()>14)
{
//S
我听说单线程使用网络带宽有一些限制?如果这是真的,这就是使用多线程编程实现最大带宽的原因吗?对网络任务使用多线程的原因是一个线程可能正在等待远程服务器的响应。创建多个线程可以帮助您一次至少有一个线程从不同的请求下载。一次发出多个网络请求的常见原因(隐式使用用户线程,或隐式使用内核线程和异步回调),网络延迟的影响可以最小化。延迟会产生很大的影响。例如,web连接首先需要DNS查找,然后是TCP 3路连接,然后是一些数据传输,最后是4路关闭。如果与延迟相比,页面大小较小,带宽较大,则大部分时间都花在
我有一个需要从多个(5+线程)访问的对象x。对象的结构是
Tx = class
private
Fx: integer;
public
property x: integer read Fx read Fx;
etc;
更好(最优雅)的保护方式是什么:
(a)
Tx=class
私有的
Fx:整数;
公众的
属性x:整数读取Fx读取Fx;
公众的
构造函数创建 使CS成为对象的成员并在属性getter/setter方法中使用CS是正确的方法
我正在设计一个静态消息总线,允许订阅和发布任意类型的消息。为了避免要求观察员明确取消订阅,我希望跟踪指向代理的WeakReference对象,而不是跟踪代理本身。我最终编写了一些类似于保罗·斯托维尔在他的博客中描述的东西
我的问题是:与Paul的代码相反,我的观察者在一个线程上订阅消息,但消息可能在另一个线程上发布。在本例中,我观察到,当我需要通知观察者时,我的WeakReference.Target值为null,表示目标已被收集,即使我确定它们不是。对于短弱引用和长弱引用,问题仍然存在
相反,
我的Delphi 2010应用程序使用多线程上传内容,上传的数据发布到需要登录的PHP/web应用程序,因此我需要使用共享/全局cookie管理器(我使用的是Indy10修订版4743),因为TIdCookieManager不是线程安全的:(
此外,服务器端会话id每5分钟自动重新生成一次,因此我必须保持全局和本地cookie管理器同步
我的代码如下所示:
TUploadThread = class(TThread)
// ...
var
GlobalCookieManager : TI
上面的代码编译得非常完美,但是当我运行./test时。我刚刚收到一条错误消息,说调用了纯虚拟方法,在没有活动异常的情况下终止调用
有人能帮我吗?谢谢 这是一个已知的错误。看
遗憾的是,没有人试图修复它。这是一个已知的错误。看
遗憾的是,没有人试图修复它。没有对g++4.7.1进行重新编程。我在clang3.1上遇到了这个问题!我认为这是编译器的问题,但显然它与libstdc++有关。我只是切换回了gcc,但无法解决它。在g++4.7.0中也可以正常工作。使用此代码复制错误的唯一方法是删除t.jo
这是一个非常普遍的问题,如果有人有任何经验,这将是伟大的
每次(在内核中)我都想在while循环中使用线程,例如:
tidx = threadIdx.x + blockIdx.x * blockDim.x;
tidy = threadIdx.y + blockIdx.y * blockDim.y;
while(i<70) {
if (tidx<640 && tidy<480){
//calculations to get a desir
我正在为一个任务编写一个scheme程序,当用户单击时创建“行星”,并在单击复选框时启动/停止行星彼此围绕轨道运行。我们应该用一个线程来实现这一点。但是,当我单击复选框时,线程挂起似乎不起作用,但resume起作用
谢谢你能提供的任何帮助!代码如下:
#lang racket
(require racket/gui)
(require racket/block)
;; Small 2d vector library for the Newtonian physics
(define (x v
我们已经在带有linux服务器的tomcat上安装了java应用程序。
当我们关闭tomcat服务器时,我在日志中收到以下错误消息
创建了一个ThreadLocal,其密钥类型为[null](值[null]),值类型为[org.apache.lucene.index.SegmentTermEnum](值为[org.apache.lucene.index])。SegmentTermEnum@19a419a4])但在web应用程序停止时无法删除它。这很可能会造成内存泄漏
有人能帮我吗
我如何停止这些
我是android新手,在异步任务和线程方面有问题。
如何在此代码中使用AsyncTask?
当我像这样使用productIdList时,它是空的。这就是为什么我要使用AsyncTask。我认为使用AsyncTask可以工作
提前谢谢
public ArrayList<String> getProductData() {
final ArrayList<String> productIdList = new ArrayList<String>();
我想知道在哪些场景和情况下应该使用线程类、线程池类或任务并行库以及它们之间的区别
我试图通过谷歌搜索找到这个,但什么也找不到
我这样问是因为在某些情况下,使用Thread类并自己管理线程会更好,而在其他情况下ThreadPool会更好,但对此不太确定
e、 g.我们希望在应用程序启动时从数据库加载大量订单数据:什么样的线程管理技术(Thread | ThreadPool | TPL)将提供最佳的好处,同时还将提供更高的代码可维护性和其他好处
以上只是一个例子,但我想具体了解线程场景中考虑的所有
我需要加载文件,场景和播放线程动画。。
尝试在Android中通过www加载文件。。。
如何通过线程做其他事情?
但是为什么游戏引擎不允许我们创建线程呢?
还是我的理解错了?
如何在UNITY3D中创建线程?根据我个人对Unity的体验,除非线程不使用Unity的任何api,否则无法创建/运行单独的线程。所以这意味着没有游戏对象或类似性质的东西。我已经成功地完成了我自己的寻路,所以我知道这是可能的。祝你好运我希望这能有所帮助。Unity3D中常用的方法是使用
要调用/使用协同路由,请执行以下操作
我正在使用uuu sync_xxx函数
然而,我注意到它们是遗留的,并且有,这在GCC4.8中介绍
我读了这本书,发现了其中的区别:_原子需要“记忆模型”
__原子不放松任何障碍或同步
__ATOMIC_仅为屏障和与另一个线程的同步使用数据依赖关系
__原子线程是提升代码的障碍,并与另一个线程的发布(或更强)语义存储同步
__原子释放阻止代码下沉,并与来自另一个线程的获取(或更强)语义负载同步
__ATOMIC_ACQ_REL在两个方向上都有完整的屏障,并与另一个线程中的获取加载和释放存储同步
由于普通计算机的RAM(与CPU相比)相对较慢,因此优化内存使用非常重要。我大致了解缓存是如何用来掩盖糟糕的内存性能的
我一直在读到,为了获得良好的性能,内存必须靠近处理器,这一点很重要。让内存“靠近”处理器到底意味着什么?这是否指缓存内存(缓存离处理器更近)?或者,主内存的不同部分之间的访问速度是否存在差异?它指的是缓存。尝试搜索L1、L2、L3缓存。L1是最近的,即当CPU想要在内存中查找某些数据时,它将访问最近的数据(L1)并进行检查。如果在这里找不到,它将随后进入较低级别,最后进入主内存
当我将CoreRegisterClassObject与CLSCTX_INPROC_服务器和REGCLS_多线程一起使用时,主线程使用CLSCTX_创建对象,我得到错误“类未注册”
当我将CoreRegisterClassObject与CLSCTX_LOCAL_SERVER和REGCLS_MULTIPLEUSE一起使用时,主线程可以创建该对象。但程序的下一个实例将在第一个进程内创建thze对象
在CoCreateInstance内使用CLSCTX_INPROC标志将始终表示该类未注册
顺便说一句:
我正在尝试将通用lisp机器学习库用于:
Ubuntu 14.04 LT
Emacs 24
黏液2.10.1
SBCL 1.2.3
当我使用终端中启动的SBCL运行以下示例时,一切正常,创建了四个线程,返回结果并关闭。当我在SLIME中运行相同的代码时,以下工作正常:
(setf *read-default-float-format* 'double-float)
(ql:quickload :clml)
(in-package :clml.decision-tree.random-fore
有人能解释一下异步方法和在Vala中创建线程之间的区别吗?在我的代码中应该在哪里使用一个或另一个?线程是可独立调度的,而异步方法在主线程中运行,也就是说,它们是协程。例如,如果在单独的线程中阻止读取套接字,应用程序可以继续运行,但如果在async方法中执行此操作,应用程序将被阻止
线程和协同程序(asyncmethods)可以解决一些相同的问题,但通常做不同的事情。在Gtk+(和许多其他GUI系统)中,只有一个线程可以操作GUI对象,来自GUI对象的事件只会在该线程中发生(通常称为事件调度线程)
我需要在我的项目中使用分布式锁定。我正在考虑让动物园管理员+馆长来做这件事。在我的调查中,我发现这两个框架可以解决我的大多数项目需求。但我有两个用例,我不清楚Zookeeper+管理员如何解决它们
锁定中的资源层次结构:
我们有资源层次结构的概念,如果资源(例如:DB表)被锁定,那么对该对象和所有子坐标资源(例如:行)的其他请求应该被阻止。类似地,如果资源的子坐标被锁定,则该资源的锁定请求应在该子坐标上阻塞。有没有办法配置馆长来满足上述需求
基于角色的可重入性:
用户U1从节点N1登录到系统。在
我需要在JavaFX应用程序的后台处理多个线程。我有一个有十个按钮的屏幕,我需要用启动线程的按钮“绑定”每个线程。如果用户按下启动线程的按钮(在主屏幕中,MainController.java),我需要恢复它以显示包含的信息,并将其显示在controls of Details屏幕(第二个屏幕,DetailController.java)上
你推荐什么课程?服务
可以用这些类中的任何一个来命名线程吗
致以最诚挚的问候,关于JavaFX并发性的快速概述将用(示例)进行解释
任务和服务都实现了接口,
刚发现
注意:虽然对于线程之间的偶尔通信很好,但对于线程之间的时间关键型或频繁通信,不应使用性能选择器:onThread:withObject:waituntldone:方法
为什么会这样?“频繁”是多少
我有一个应用程序,有很多线程,在主线程中发生了很多事情(繁重的JavaScript,WebKit中频繁的Ajax查询)。在约塞米蒂,我开始体验到几个(比如10个)文件下载(NSURLDownloads)加上WebKit GUI(需要在主线程中运行)的巨大问题
如果WebKit由JavaScri
我正在尝试在Swift中创建我的第一个应用程序,它涉及到向一个网站发出多个请求。这些请求都是使用块完成的
var task = NSURLSession.sharedSession().dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in ... }
task.resume()
据我所知,此块使用的线程与主线程不同
我的问题是,设计依赖于该块中的值的代码的最佳方法是什么?例如,
我正在开发一个DelphiXe4服务应用程序。该服务为一些长时间运行的任务启动线程,线程通过PostThreadMessage调用返回状态
主ServiceExecute循环如下所示:
procedure TScanService.ServiceExecute(Sender: TService);
var
CurrentMessage: TMsg;
begin
LogServerEvent('ServiceExecute', 'Starting');
while not Termin
假设我们有两个线程T1和T2
T1 has 5 print statements
print X1
print X2
print X3
print X4
print X5
T2 has 3 print statements
print Y1
print Y2
print Y3
T1和T2交织时,输出序列的可能组合是什么?对于这些类型的问题,是否有一个固定的关系或公式——以找到所有可能的结果
除了暴力法,我们还有什么其他的方法来处理它呢?没有普遍适用的规则。您唯一可以信赖的是,单个线程中的
我的Gradle构建通过ant.signjar任务标记了近200个JAR。为了加快速度,我决定尝试使用来自和的信息对其进行多线程处理。仅供参考:在我的Core Duo笔记本电脑上,这个时间从25分钟减少到7分钟(快4倍!)
然而,有时它运行成功,有时它失败,我不知道为什么。这可能和多线程有关,但我无法解释为什么它不是每次都发生
我的代码现在看起来像这样
import groovy.io.FileType
import static groovyx.gpars.GParsPool.withPool
我正在使用NSURLConnection进行internet可用性检查,但它无法调用成功或错误块:
- (void)isNetworkAvailableWithCallBack:(SuccessCallback)successBlock onFailure:(FailureCallback)failureBlock {
NSURL *URL = [NSURL URLWithString:@"http://www.google.com/"];
NSURLRequ
我正在尝试使用F#中的saveFileDialog保存文件。到目前为止,我已经看过并试图重写该代码和网络上的其他代码。我还读了一些关于msdn上的saveFileDialogs的内容
我认为我的代码应该可以工作,但由于某种原因它崩溃了(如果我在IDE中按continue,我甚至可以看到saveFileDialog,但是使用了错误的类型过滤器)
我的崩溃消息是“System.Windows.Forms.dll中发生了“System.Threading.ThreadStateException”类型
我正在使用下面类似的CYPHER(使用Neo4j 2.2.3,通过事务性CYPHER REST端点)以原子方式读取和增加节点上的计数器属性:
MATCH node WHERE id(node)={nodeId}
SET node.counter=COALESCE(node.counter,0) + 1
RETURN node.counter
我有多个线程这样做REST文章,现在我看到了一个案例,两个线程返回了相同的计数器值
此行为类似于此处描述的从2.1到2.2的可能回归:
然而,早些时候有人
我正在开发的应用程序的一部分需要向一小群人发送一些电子邮件。由于连接到SMTP服务器并发送电子邮件可能需要一些时间,因此我希望在此操作期间使用后台线程提供一个进度条来完成此工作
现在的情况是,我可以实现一个工作正常的测试结构,但一旦我尝试从应用程序的后端创建一个对象来实际执行任何电子邮件操作,它就会完全崩溃(好像它发生了故障),并将其转储到控制台:
[xcb] Unknown request in queue while dequeuing
[xcb] Most likely this is a
我不知道应该把CriticalSection放在哪里。在线程中,我有一个公共过程(write),在这个过程中我将数据写入文件
调用此过程时,我应该在该过程中使用CriticalSection还是在每个线程中使用CriticalSection
例如:
我有一个线程,我创建了CS
type
TMyThread = class(TThread)
private
{ Private declarations }
CS:TCriticalSection;
public
pr
我对生锈还不熟悉,我正在与借钱的概念作斗争
我想加载一个Vec矩阵,然后并行处理它。然而,当我试图编译这段代码时,我在let行得到了错误:移动值的捕获:`matrix`[E0382]
这个矩阵应该是线程的只读矩阵,它们不会修改它。如何以只读方式传递它,并消除“移动值”错误
fn process(matrix: &Vec<Vec<f64>>) {
// do nothing for now
}
fn test() {
let filename =
我读到有可能在没有并发的情况下实现并行。这是正确的吗
假设您有两个任务A和B,每个任务都需要两个步骤才能完成:A1、A2、B1、B2。此外,进程由线程组成
下面我将介绍我对并发性和并行性的看法:
连续的
Time ----->
Thread 1: A1 A2 B1 B2
同时发生
Time ----->
Thread 1: A1 A2
Thread 2: B1 B2
并行(和并发)
如果这是正确的,那么没有并发就不可能
我读了这个问题,但它并没有真正的帮助
首先也是最重要的一点:时间性能是我正在开发的应用程序的重点
我们有一个客户机/服务器模型(如果我们愿意,甚至是分布式的或云计算的)和一个托管在服务器上的数据结构D。每个客户端请求包括:
从D
最终在D
最终删除D
我们可以说,在这个应用程序中,接收到的操作数之间的关系可以描述为delete您使用的方案有效。我看不出有什么特别的问题。这与许多数据库运行HA解决方案基本相同。它们将写入日志应用于副本。该模型在副本的形成、访问和维护方面提供了很大的灵活性。故障切换
所以我想我在某个地方读到,在任何给定的时间,只有一个进程只能获得一个处理器资源。但我还认为我在某个地方读到过,每个线程在任何给定的时间都可以获得一个处理器资源。后一条语句将与第一条语句相矛盾,因为进程可能存在于更多线程之外
那么,一个进程的线程可以与该进程的其他线程并行运行吗?(对于并行,我指的是通过多个处理器或内核同时运行)是的,它们可以
这就是通过多线程程序在多核系统上实现并行的方式。
想象一下,如果不是这样,那么在多核处理器上安装多线程程序就没有意义了。
现在您可能会问,如何在多核上实现调
报告说:
对异步操作的支持已添加到客户端
图书馆
作为CMIS客户端,如何使用OpenCMIS 0.14或更高版本并行执行多个下载,或并行执行多个上载
多亏了多线程,我的目标是更快地完成所有操作。我可以在多个线程之间手动共享会话对象,但如果OpenCMIS有内置功能,我宁愿使用它。首先,像往常一样
然后,使用此会话创建一个:
然后像使用普通会话对象一样使用此asyncSession
混合同步和异步
通常,您还需要执行一些同步操作。例如,同步创建一个文件夹,然后异步上载该文件夹中的文件。因为如果不
我几乎实现了一个人脸识别Go服务器。我的人脸识别算法使用caffe,caffe是一个线程绑定的图形库,这意味着我必须在同一个线程中初始化并调用算法,所以我检查了
LockOSThread使用1个线程,但我的服务器拥有4个GPU
在C/C++中,我可以创建4个线程,在每个线程中初始化算法,使用sem\u wait和sem\u post分配任务,1个线程使用1个GPU
如何在Go中执行相同的操作,如何将代码与线程绑定?如果生成了一些goroutine,请在每个goroutine中运行runtime.
我有一个小程序,它用4个子图绘制一个图形。我制作了一个小GUI,并从线程中调用绘图函数,因此每次单击按钮时,它都应该重新收集数据并重新绘制该图形(带有4个子图),而无需关闭脚本。脚本可以第一次绘图,但是在第二次(单击按钮而不关闭脚本)时,它会在初始化子绘图时停止。我已经尝试过plt.close('all')、plt.close(图)、plt.clf()、,。。。但这没用。我真的不知道为什么它会在第二次停止
这是我完整的小剧本。非常感谢您的任何意见
import sys, os
import ti
当我调用我的多线程perl脚本时,在一些情况下,它会引发一些类似以下的异常。很抱歉,我无法共享代码。但如果真的需要,我可以尝试构建一个片段(如果真的需要)。因为我想这应该有一些理论上的答案
*** glibc detected *** perl: double free or corruption (!prev): 0x00007f775401e9a0 ***
======= Backtrace: =========
/lib64/libc.so.6[0x3d74c75e66]
/lib64/l
它到底是测量什么的
我在Azure中有一个Debian VM,带有16个vCPU。我用它来运行tensorflow。Azure门户上的指标“CPU百分比”显示平均为33.5%。我担心的是,我可能无法充分利用所有16个vCPU
真正让我困惑的是,top命令显示了占主导地位的600%CPU的Python进程。为什么这个数字与Azure的33.5%不一致
有一次,我怀疑tensflow线程的数量不够。然而,当我更新时,Azure的“CPU百分比”保持不变,为33.5%top-H确实显示了线程数量的增加
该应用程序是在ASP NET Core 3上开发的。为了记录用户操作,我决定在项目类中使用一个方法。面临从不同线程使用一个单一dbContext的问题
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
string connection = Configuration.GetConnectionString("ConnectionDB");
services.AddDbContext&l
假设我们有两个线程访问一个共享内存a
原子性确保每个操作对其他线程都完全完成。所以如果
我做a=5,每个线程要么看到0,要么看到5,并且没有另一半更新的32位值
现在是我的困惑。如果我想确保每一个线程在上面的赋值之后只看到5,该怎么办。实现这一点最常用的方法是使用锁,对吗
如果是这样,那么锁不提供原子性?原子性和同步是两个不同的概念?您实际上描述的是另一个概念:可见性
分配a=5时,其他CPU需要一段时间才能看到此分配。如果您希望分配线程在所有其他线程都不能看到a==0,并且只能看到a==5之前
我有ASP.NET应用程序(Framework4.8),它偶尔会在几毫秒内达到100%的CPU使用率。必须知道,在CPU负载期间或之前,应用程序不会经历客户端RPS突发。实际上,在CPU使用量激增之前,它只服务于几个客户端请求
通过WPA图形查看perfview转储CPU使用率(采样),我看到CPU峰值的顶部以及峰值的幻灯片都充满了从Dequeue和TrySteal方法堆积起来的CPU样本。另外,系统指标显示,在CPU加载期间,应用程序经历了大量使用的工作线程(ThreadPool.GetAva
Julia线程中是否有类似于OpenMP中单个命令的内容,确保所有线程在特定代码块之前等待,然后仅在一个线程中执行该块?我有一个循环,在一次对所有位置执行更新之前在线程之间分配力的计算,如果不终止@threads循环,我找不到任何功能来实现这一点。您可以使用锁:
function f()
l = Threads.SpinLock()
x = 0
Threads.@threads for i in 1:10^7
Threads.lock(l)
我发现logback源代码使用非易失性变量来停止线程,安全吗?正如我们所知,易失性可以保证可见性,但使用非易失性时,工作线程似乎看不到“started”变量的新值。尽管有时它工作得很好。有人能解释这一点吗
类工作线程扩展{
公开募捐{
AsyncAppenderBase父级=AsyncAppenderBase.this;
appenderatachableimpl aai=parent.aai;
//在父级启动时循环
while(parent.isStarted()){
试一试{
E=paren
有n个线程。我试图实现一个函数(伪代码),如果它被线程调用,它将直接阻塞。如果超过n/2个线程调用了该函数,则每个线程都将被阻塞,并且该函数将停止阻塞线程。如果调用该函数的线程超过了n/2个,该函数将不再阻止其他线程,而是立即返回
我是这样做的,但我不确定我是否正确地完成了最后一部分,如果超过n/2线程调用它,函数将立即返回:
(非常感谢伪代码,因为这样我就有更好的机会理解它了!:)
int n = total amount of threads
sem waiter = 0
sem mutex
在POSIX中,由于“虚假唤醒”问题,程序员在检查条件时被迫使用while()而不是if
我认为虚假唤醒是一个不直观和令人困惑的问题,但我认为这是一个不可避免的问题
最近,我发现win32的事件对象没有“虚假唤醒”问题
为什么POSIX系统和其他系统仍然使用存在“伪唤醒”问题的条件变量?(尽管这可以解决吗?你问:
为什么POSIX系统和其他系统仍然使用存在“伪唤醒”问题的条件变量?(尽管如此,还是可以解决吗?)
基本上,它比另一种更快
POSIX.1-2017处理pthread_cond_广播和
System.InvalidOperationException:'调用线程无法访问此对象,因为另一个线程拥有它。'
我有一个WPF GUI,其中有一个按钮,单击该按钮时会执行以下操作:
启动控件动画(在GUI上),然后
启动后台进程以获取本地打印机队列
我不想阻止主线程(GUI)。然而,当我试图用后台进程的结果更新主线程时,我的代码给出了上述错误
如何让后台异步进程更新主线程而不发生上下文冲突,并且不阻塞主线程
open System.Printing
let GetPrinters =
上一页 1 2 3 4 5 6 ...
下一页 最后一页 共 323 页