草庐IT

线程id

全部标签

c# - IEnumerable<T> 线程安全?

我有一个填充List的主线程.此外,我创建了一个将在不同线程上执行的对象链,需要访问列表。原始列表生成后将永远不会被写入。我的想法是将列表传递为IEnumerable到在其他线程上执行的对象,主要是为了不允许那些实现这些对象的人错误地写入列表。换句话说,如果保证不写入原始列表,多线程使用.Where是否安全?或foreach在IEnumerable上?如果原始集合从未更改,我不确定迭代器本身是否是线程安全的。 最佳答案 IEnumerable无法修改。那么什么可以是非线程安全的呢?(如果您不修改实际的List)。对于非线程安全,您需

c# - 让线程等待 n 个脉冲

我如何等待n个脉冲?…//dosomethingwaiter.WaitForNotifications();我希望上面的线程等待直到被通知n次(被n个不同的线程或n次被同一个线程通知)。我相信有一种计数器可以执行此操作,但我找不到。 最佳答案 看看CountdownEventClass:CountdownEventClassRepresentsasynchronizationprimitivethatissignaledwhenitscountreacheszero.示例:CountdownEventwaiter=newCountd

c# - IOCP 线程 - 澄清?

阅读后thisarticle其中指出:Afteradevicefinishesitsjob,(IOoperation)-itnotifiestheCPUviainterrupt..........However,that“completion”statusonlyexistsattheOSlevel;theprocesshasitsownmemoryspacethatmustbenotified.........Sincethelibrary/BCLisusingthestandardP/InvokeoverlappedI/Osystem,ithasalreadyregisteredt

c# - 多个线程向一个列表添加元素。为什么列表中的项目总是比预期的少?

下面的代码解释了我的问题。我知道列表不是线程安全的。但这背后的“真正”原因是什么?classProgram{staticvoidMain(string[]args){ListstrCol=newList();for(inti=0;i{AddElements(strCol);}).ContinueWith((t)=>{WriteCount(strCol,id.ToString());});}Console.ReadLine();}privatestaticvoidWriteCount(ListstrCol,stringid){Console.WriteLine(string.Format

c# - 获取当前用户的 ID ASP.NET Membership

你们如何设法使用ASP.NET成员身份提供程序获取当前用户的ID?我的应用程序是一个使用数据库优先方法的MVC3,所以我创建了自己的数据库,并且成员资格提供者和角色提供者正在使用我的表(自定义成员资格和角色提供者)。在我的一个页面(反馈)中,用户可以发送关于我的网站的反馈,如果他已连接,我想在插入时将用户ID包含在表中。但由于ASP.NET成员资格是一个IIdentity,我唯一可以访问的就是名称。我不想使用名称在2个表之间创建链接,我想要ID!那么,对于这个非常简单的任务,您在应用程序中做了什么?我的意思是,几乎在每个连接用户需要插入值的页面中,我们都需要用户ID来为用户表创建正确的

c# - 如何防止 ASP.NET 站点中同一用户 ID 的多次登录?

如何防止多个用户同时使用一个用户ID登录?我在互联网上搜索并找到了一些方法,但它们在这些情况下不起作用:如果浏览器中的JavaScript已关闭。如果用户没有点击“注销”,而是直接关闭了浏览器。建议将不胜感激。谢谢。 最佳答案 我们按照以下几行为此实现了一个系统:向用户配置文件添加了一个属性来保存他们的sessionID。每当用户登录时,将他们的sessionID存储在配置文件中。在任何需要此级别安全性的页面上,检查配置文件中存储的sessionID是否与其session匹配。此检查可以在自定义AuthorizeRequest事件处

c# - 线程完成时通知,不锁定调用线程

我正在开发基于NET3.5构建的遗留应用程序。这是我无法改变的约束。我需要执行第二个线程来运行长时间运行的任务而不锁定UI。当线程完成时,我需要以某种方式执行回调。现在我尝试了这个伪代码:Thread_thread=newThread(myLongRunningTask){IsBackground=True};_tread.Start();//waituntilit'sdone_thread.Join();//executefinalizer不锁定UI的第二个选项如下:Thread_thread=newThread(myLongRunningTask){IsBackground=Tru

c# - 编辑记录时 RadGrid 中的 "Cannot unregister UpdatePanel with ID ' xxx ' since it was not registered with the ScriptManager... "

让我切入正题。我的场景如下:我有自定义添加的字段来过滤RadGrid并且过滤效果很好。当我想在RadGrid中使用EditForm编辑记录时,问题就来了。它过去工作正常,但后来我在选择正确的行时遇到了一些问题(我总是选择错误的行)所以这就是我修复它的方法。所以,我的带过滤器的RadGrid看起来像这样:我所做的是使用session,这将帮助我们稍后确定过滤的RadGrid数据源是已启动还是默认的。protectedvoidbtnSearch_Click(objectsender,EventArgse){Session["SearchKontakti"]="1";}之后,我必须使用if循

c# - 我的 winform 应用程序关闭时如何停止线程

我有一个单例,它有一个正在运行的线程,用于从服务器获取记录。但是当我停止我的winform应用程序时,线程继续运行。我试图在我的单例中创建一个析构函数来中止正在运行的线程,但它对线程没有任何影响——我知道正在调用析构函数。我正在寻找有关在我的应用程序关闭时应该如何关闭线程的建议。谢谢C#、.net2 最佳答案 线程可以是:前台:将使您的程序保持事件状态直到完成。背景:当您关闭应用程序时将终止。当你创建一个线程时,它默认是一个前台线程。你可以这样改变:Threadt=newThread(myAction);t.IsBackground

c# - 托管 clr 并捕获线程异常

我正在尝试编写一个可以加载托管插件的插件系统。如果有任何异常,主机应该能够卸载插件。对于我的poc,我在C#中有一个示例代码库,它会抛出这样的异常...publicstaticintStartUp(stringarguments){Console.WriteLine("Startedexceptionthrowerwithargs{0}",arguments);ThreadworkerThread=newThread(()=>{Console.WriteLine("Startingathread,doingsomeimportantwork");Thread.Sleep(1000);t