草庐IT

rb_thread_call_without_gvl

全部标签

c# - 没有 "threads"的异步和等待?我可以自定义引擎盖下发生的事情吗?

我有一个关于如何自定义新async的问题/await关键字和TaskC#4.5中的类是。首先了解我的问题的一些背景知识:我正在开发具有以下设计的框架:一个线程有一个“当前待办事项”列表(通常大约有100到200个项目),这些列表存储为自己的数据结构并作为列表保存。它有一个Update()枚举列表并查看某些“事物”是否需要执行并执行的函数。基本上它就像一个大线程调度器。为了简化事情,让我们假设“要做的事情”是返回bool值true的函数。当它们“完成”时(不应称为下一次更新)和false下次更新时调度程序应该再次调用它们。所有“事物”不能并发运行,也必须在一个线程中运行(因为线程静态变量

c# - Thread.sleep vs Monitor.Wait vs RegisteredWaitHandle?

(以下项目有不同的目标,但我很想知道它们是如何“暂停”的)问题Thread.sleep-它会影响系统的性能吗?它会占用线程等待吗?Monitor.Wait呢?他们“等待”的方式有什么不同?他们会在等待时占用线程吗?RegisteredWaitHandle怎么样?此方法接受等待时执行的委托(delegate)句柄发出信号。在等待期间,它不会占用线程。所以一些线程被暂停并且可以被委托(delegate)唤醒,而其他线程只是等待?旋转?有人可以把事情说清楚吗?编辑http://www.albahari.com/threading/part2.aspx 最佳答案

C# Application.Run without Form

是否可以调用Application.Run,​​但不传递表单参数,或者如果没有可调用的表单,是否有替代方法?Run方法似乎没有任何不接受表单的重载。例如,如果我想先实例化一个类,然后让它调用表单,有没有办法做等同于:Application.Run(myClass);澄清一下,我仍然想要.Run()提供的功能。也就是说,建立一个循环来保持应用程序运行,但不是跟踪表单,而是跟踪类或其他对象。这最初与紧凑型框架有关。我认为这就是Run方法没有我正在寻找的重载的原因。 最佳答案 TheRunmethoddoesn’tseemtohavean

c# - 为什么这个程序会出错? `Object synchronization method was called from an unsynchronized block of code`

这段代码有什么问题?我收到“从未同步的代码块调用对象同步方法”。我在谷歌上发现了一个结果,说我可能在锁定之前释放了一个互斥体,但根据我的输出,情况并非如此。这是互斥锁代码,中间没有其他代码。-edit-对不起大家,贴错了。我的输出1W1W2W代码usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Threading;namespacesqliteTest{classProgram{staticvolatileMutexmut1=newMutex();staticvolatileMutexmut

c# - SSRS : Get list of all reports and parameters in a single web service call?

简短而贴心的版本:是否有一个单一的Web服务方法可以返回所有可用报告的名称以及每个报告的参数?我将我的网络代码(C#/MVC)连接到SSRS网络服务,并且我能够通过这些服务检索报告。我知道我可以获得像这样的可用报告列表:varrService=newReportingService2005{Url=@"http://domain.com/ReportServer/ReportService2005.asmx?wsdl",Credentials=System.Net.CredentialCache.DefaultCredentials};varreportList=rService.Li

c# - 何时处理带有子任务的 System.Threading.Task?

我有一个启动多个子任务的任务。(例如,任务A创建B、C、D、E、F)。我还创建了一个System.Threading.Timer以每10秒轮询一次数据库,以检查计划的项目是否已按请求取消。如果是,它会设置CancellationTokenSource以便任务知道要取消。每个子任务,在本例中为B、C、D、E、F,将在适当的时候取消(它们循环遍历文件并四处移动)。由于Task实现了IDisposable,我想知道从再次调用Task.WaitAll是否是个好主意catchblock,等待取消传播。虽然将处理取消请求,但子任务可能处于循环中间并且在完成之前无法取消但是,根据MSDN:Alway

c# - VSTO 字 2016 : Squiggly underline without affecting undo

我正在开发一个实时语言分析工具,它需要在Word2016中使用VSTO加载项突出显示单词以引起作者的注意,该加载项使用C#以.NET4.6.1编写。想想语法/拼写检查,它会在单词下方添加一条波浪线,告诉您该单词有语法或拼写错误。我正在为我自己定义的一些规则添加类似的功能。我四处搜索添加波浪线,偶然发现了Font.Underline和Font.UnderlineColor。我将其设置在一个词的范围内,它似乎提供了我想要引起注意的视觉刺激。但是有一个问题。我添加的每个下划线或更改的下划线颜色都会向撤消堆栈添加一个撤消操作。我不希望这种情况发生,或者我想要一种方法来从堆栈中弹出我刚刚在代码中

c# - 串行调用 Threading.Timer.Change() 会重置计时器的时钟吗?

如果我调用Threading.Timer.Change()连续两次,下一次线程什么时候运行?例如:myTimer.Change(5000,Timeout.Infinite);//Only2secondspass.myTimer.Change(5000,Timeout.Infinite);在此之后,线程会在3秒或5秒后运行吗?我希望答案是后者,每次调用Change()都会重置计时器。如果没有,我将需要找到解决此问题的方法。 最佳答案 它将在5秒后运行。调用Change将重置初始计数。 关于

C# 错误 : The call is ambiguous between the following methods or properties. 运算符重载

我在名为Dinero的命名空间中有2个带有重载运算符的类,这些是2个类:第一个:namespaceDinero{classDollar{#regionAtributospublicDoublecant;#endregion#regionConstructorespublicDollar(){this.cant=0;}publicDollar(Doubleamount){this.cant=amount;}#endregion#regionSobrecargadeOperadorespublicstaticDollaroperator+(Euroeu,Dollardol){Dollard

c# - Thread.IsAlive 和 Thread.ThreadState==ThreadState.Running

我正在使用if(Thread.IsAlive)检查线程的状况。该线程中正在运行一个表单。有时在执行过程中,即使窗体保持打开状态,对Thread.IsAlive的调用似乎评估为false。我想用if(Thread.ThreadState==ThreadState.Running)执行相同的检查。这是正确的做法吗?如果不是,可能的解决方法是什么? 最佳答案 msdnThread.IsAlive属性如果此线程已启动且未正常终止或中止,则为true;否则为假。msdn线程.ThreadState运行线程已经启动,没有阻塞,也没有挂起的Thr