草庐IT

线程id

全部标签

C# Threading.Suspend 已过时,线程已被弃用?

在我的应用程序中,我正在通过另一个线程(GUI线程除外)执行文件读取。有两个按钮分别用于暂停和恢复线程。privatevoidBtnStopAutoUpd_Click(objectsender,EventArgse){autoReadThread.Suspend();}privatevoidBtnStartAutoUpd_Click(objectsender,EventArgse){autoReadThread.Resume();}但我正面临这个警告,Thread.Suspendhasbeendeprecated.PleaseuseotherclassesinSystem.Thread

c# - .NET 2.0 : File. AppendAllText(...) - 线程安全实现

作为无聊的好奇心练习,考虑以下简单的日志记录类:internalstaticclassLogging{privatestaticobjectthreadlock;staticLogging(){threadlock=newobject();}internalstaticvoidWriteLog(stringmessage){try{lock(threadlock){File.AppendAllText(@"C:\logfile.log",message);}}catch{...handleloggingerrors...}}}File.AppendAllText(...)周围是否需要锁

c# - 由于线程退出或应用程序请求,I/O 操作已中止

我的应用程序用作银行服务器的客户端应用程序。该应用程序正在发送请求并从银行获得响应。此应用程序通常运行良好,但有时TheI/Ooperationhasbeenabortedbecauseofeitherathreadexitoranapplicationrequest错误代码为995。publicvoidOnDataReceived(IAsyncResultasyn){BLCommonFunctions.WriteLogger(0,"In:-OnDataReceived",refswReceivedLogWriter,strLogPath,0);try{SocketPackettheS

c# - 具有多线程或任务的进程队列

我有一个电话消息应用程序,其中有很多消息需要处理。由于电话端口有限,所以消息将被先进先出处理。每条消息都有一个标志“Acknowledge”,指示已处理的消息。它当然被初始化为false。我想将所有消息放入一个队列,然后用多个线程或任务处理它们。publicclassMessageQueue{publicQueueMessageWorkItem{get;set;}publicMessagesMessage{get;set;}publicMessageQueue(){MessageWorkItem=newQueue();Message=newMessages();}publicvoidG

c# - 我应该将枚举 ID/值存储在数据库中还是 C# 枚举中?

假设我的数据库表有UserType、SalesType等列我应该拥有包含UserTypeID、userTypeName的数据库表还是应该只创建一个C#枚举? 最佳答案 两者有什么问题?如果值是用户定义的或不断变化的,enum肯定不适合。如果值严格不变(例如性别),您可以将它们作为enums以便于在应用程序中引用,也可以在数据库中作为单独的表来强制执行外键和作为一个引用。 关于c#-我应该将枚举ID/值存储在数据库中还是C#枚举中?,我们在StackOverflow上找到一个类似的问题:

C# 线程和队列

这不是关于我可以或应该使用的不同方法来以最佳方式利用队列,而是关于我所看到的对我来说毫无意义的事情。voidRunner(){//membervariablequeue=Queue.Synchronized(newQueue());while(true){if(0这是在单线程中运行的:vart=newThread(Runner);t.IsBackground=true;t.Start();其他事件在其他地方“排队”。我所看到的情况是在一段时间后,Dequeue实际上会抛出InvalidOperationException,队列为空。这应该是不可能的,因为计数如何保证那里有东西,而且我很

c# - HttpContext.Current.Cache 是线程安全的吗?

请检查下面的代码:objDDLTable=HttpContext.Current.Cache["TestSet"]asHashtable;if(objDDLTable==null){objDDLTable=newHashtable();arrDDLItems=GetDropDownList("testDropDown");objDDLTable.Add("testDropDown",arrDDLItems);HttpContext.Current.Cache["TestSet"]=objDDLTable;}elseif(objDDLTable!=null&&!objDDLTable.C

c# - 如何在指定线程上执行代码

有哪些方法可以在指定线程上执行某些代码?所以让我们假设我有一个Thead和一个委托(delegate),我需要在这个线程上执行这个委托(delegate)。我该如何实现?我对SynchronizationContext等基础设施不感兴趣,我想知道手动实现此行为的方法。 最佳答案 要在指定线程上执行某些操作,您需要该线程来拉取工作,例如从同步队列中拉取工作。这可以是委托(delegate)或具有某种Execute()方法的已知类型。在UI框架的情况下,通常也可以将工作直接(或间接)添加到主线程(通过消息队列)——例如,Control.

c# - C# 类库的线程本地存储

我有一个非常古老但非常大的库,我正在考虑将其转换为C#类库。现有的库使用了很多存储在TLS中的全局变量。C#没有全局变量的真正概念,但一种解决方法是使用一个名为GlobalVar之类的静态类,并将它们全部放在此类中,以便可以通过GlobalVar.xxxxxx访问它们但是,我的想法是,这将破坏所有正在转换的现有代码,因为GlobalVar类将是一个普通的全局类,而不是每个线程存储。有没有办法让这些全局变量成为每个线程?即C#中__declspec(thread)static的等价物是什么?我应该补充一点,我讨厌全局变量。我认为它们通常是设计不佳的结果。但是,由于时间紧迫,第一阶段是将库

c# - C# 中是否有用于在给定线程上引发异常的好方法

我想写的代码是这样的:voidMethodOnThreadA(){for(;;){//Dostuffif(ErrorConditionMet)ThrowOnThread(threadB,newMyException(...));}}voidMethodOnThreadB(){try{for(;;){//Dostuff}}catch(MyExceptionex){//Dotherightthingforthisexception.}}我知道我可以让线程B以线程安全的方式定期检查线程A是否设置了标志,但这会使代码更加复杂。我可以使用更好的机制吗?这是一个更具体的定期检查示例:Diction