草庐IT

Tread多线程

全部标签

c# - .NET 加密类的线程安全性?

我有一个高级目标,即创建一个static实用程序类来封装我的.NET应用程序的加密。在内部,我想尽量减少不必要的对象创建。我的问题是:在.NETFramework中实现对称加密的类的线程安全性是什么?特别是System.Security.Cryptography.RijndaelManaged和ICryptoTransform它生成的类型。例如,在我的类构造函数中,我可以简单地按照以下几行做一些事情吗?staticMyUtility(){using(RijndaelManagedrm=newRijndaelManaged()){MyUtility.EncryptorTransform=

c# - 如果未返回,则在间隔后终止线程

我有一个线程可以从网络或串行端口获取一些数据。如果在5秒内没有收到数据,线程必须终止(或返回false)。换句话说,如果线程运行时间超过5秒,它必须停止。我正在用C#编写,但任何.NET语言都可以。 最佳答案 有两种方法:1。封装超时从网络或串口读取数据的线程可以测量从它开始时起耗时,等待数据的时间不超过剩余时间。网络通信API通常提供为操作指定超时的方法。因此,通过执行简单的DateTime算法,您可以将超时管理封装在工作线程中。2。外部超时使用另一个线程(或者如果可行的话在主线程中执行)等待工作线程在特定时间限制内完成,如果没有

c# - IAsyncResult 与线程池

我最近刚接触到IAsyncResult并且已经使用了很长时间。我真正想知道的是,当我们有更好的替代ThreadPool方法时,为什么还要使用IAsyncResult?从我目前对两者的理解来看,我几乎在所有情况下都会选择使用ThreadPool。所以我的问题是,是否存在IAsyncResult优于另一个的上下文?为什么我不喜欢IAsyncResult:增加了BeginXXX和EndXXX的复杂性如果调用者不关心返回值,他可能会忘记调用EndXXXAPI设计中的冗余增加(我们需要创建Begin和End包装器方法对于我们想要异步运行的每个方法)可读性降低把它放在代码中:线程池publicvo

c# - 如何将消息发布到运行消息泵的 STA 线程?

所以,关注this,我决定在专用STA线程上显式实例化一个COM对象。实验表明COM对象需要一个消息泵,这是我通过调用Application.Run()创建的:privateMyComObj_myComObj;//CalledfromMain():ThreadmyStaThread=newThread(()=>{_myComObj=newMyComObj();_myComObj.SomethingHappenedEvent+=OnSomthingHappened;Application.Run();});myStaThread.SetApartmentState(ApartmentSt

c# - 在池化的 C# 线程中休眠

在this关于C#中线程的Web教程,JosephAlbahari写道:“不要睡在线程池中!”你为什么不应该这样做?它对性能的影响有多严重?(不是我想做,只是好奇。) 最佳答案 线程池中只有有限数量的线程;线程池旨在高效地执行大量短任务。它们依赖于每个任务快速完成,以便线程可以返回池并用于下一个任务。因此,在线程池中休眠的线程会耗尽线程池,最终可能会耗尽可用线程,并且无法处理您分配给它的任务。 关于c#-在池化的C#线程中休眠,我们在StackOverflow上找到一个类似的问题:

c# - 从另一个线程捕获异常

我有一个在单独线程中运行的方法。该线程是从Windows应用程序中的窗体创建和启动的。如果从线程内部抛出异常,将其传回主应用程序的最佳方法是什么。现在,我将对主窗体的引用传递到线程中,然后从线程中调用该方法,并使该方法被主应用程序线程调用。是否有执行此操作的最佳实践方法,因为我对我现在的操作方式不太满意。我的表单示例:publicclassfrmMyForm:System.Windows.Forms.Form{//////Createathread/////////privatevoidbtnTest_Click(objectsender,EventArgse){try{//Creat

c# - 有没有办法唤醒 sleep 线程?

有没有办法在C#中唤醒休眠线程?那么,让它休眠很长时间,然后在您需要处理工作时唤醒它? 最佳答案 安AutoResetEvent对象(或另一个WaitHandle实现)可用于休眠,直到收到来自另一个线程的信号://launchacalculationthreadvarwaitHandle=newAutoResetEvent(false);intresult;varcalculationThread=newThread(delegate{//thiscodewillrunonthecalculationthreadresult=Fac

Python多线程详解

现代计算机CPU物理核心普遍比较多,我们在编写程序时经常会用到多线程技术来提高程序运行的效率。作为python萌新,我在掌握基本语法后就很想摆弄一下python的多线程,使用起来确实很有python的特点,代码量少、操作方便。之后断断续续写了一些多线程程序,直到今天下午逛论坛,看到很多人说python多线程机制的一些内情,我才意识到自己有多愚蠢哈哈。我把自己学到的内容系统的整理一下,以备后忘,也帮帮后来者。Python多线程详解1.线程创建与管理1.1创建线程1.2设置守护线程1.3设置线程阻塞1.4线程间通信的方法1.4.1线程锁1.4.2queue模块(同步队列类)1.5杀死线程1.6线程

c# - 如何强制 Task.Factory.StartNew 进入后台线程?

我已经看到许多其他类似的问题,但没有在那里找到我的答案。我的问题是我正在使用以下流程创建线程:privatevoidbtn_Click(objectsender,EventArgse){service.GetCount((count,ex)=>{if(ex!=null)return;for(inti=0;icallback){varcallingThread=TaskScheduler.FromCurrentSynchronizationContext();Funcaction=()=>{returnclient.GetCount();//Synchronousmethod,could

c# - 如何安全地停止在 Windows 服务中运行的 C# .NET 线程?

我正在维护一些看起来像这样的代码。这是一项Windows服务,每30分钟执行一些工作。ActualWorkDoneHere方法需要大约30秒才能运行,但如果它在运行时停止,可能会使事情处于糟糕的状态。防止这种情况发生的最佳方法是什么?我应该用onstop方法中设置为false的bool值替换While(true)(删除线程Abort调用)吗?有什么方法可以判断线程是否正在休眠?namespaceWorkService{publicpartialclassWorkService:ServiceBase{privateThread_workerThread=null;publicWorkS