草庐IT

c# - 创建新流程是否有助于我遍历一棵大树?

让我们把它想象成一个家谱,父亲有child,那些child有child,那些child有child,等等......所以我有一个递归函数,让父亲使用递归来获取child,现在只需将它们打印到调试输出窗口......但在某个时候(让它运行一小时并打印26000行后)它给了我StackOverFlowException。那么我真的内存不足了吗?嗯?那我不应该得到一个“内存不足异常”吗?在其他帖子上我发现人们说如果递归调用的次数太多,你可能仍然会得到一个SOF异常......无论如何,我的第一个想法是将树分解成更小的子树..所以我知道我的根父亲总是有这五个child,所以与其调用我的方法一次

c# - ThreadPool 中线程的名称 - C#

我正在使用ThreadPool在Windows服务中执行一组任务。该服务每10秒生成新线程。我想记录从数据库中获取特定任务的线程的名称。是否可以获取线程的名称? 最佳答案 最简单的方法是从每个线程的上下文中获取,因为您拥有可用的CurrentThread属性以及归因于线程的所有属性:System.Threading.Thread.CurrentThread.Name不过就像之前的发帖人提到的那样,我不确定这在线程池中的意义有多大,我不确定。 关于c#-ThreadPool中线程的名称-C

c# - 计时器是否创建新线程?

timer.Interval=5000;timer.Tick+=newEventHandler(timer_Tick);timer.Start();“timer_Tick”方法是在新线程中启动还是仍在创建它的线程中? 最佳答案 不,计时器在创建它的线程中运行。我假设你在谈论System.Windows.Forms.Timer这是使用线程消息循环实现的。WinForms计时器的底层是Win32APISetTimer()它通过将WM_TIMER消息发送到SetTimer()线程的消息队列来操作。这样做的后果之一是,如果您的事件处理程序花

c# - 如何在新线程上打开一个窗口?

我有一个选项窗口和一个根据这些选项和Kinect数据显示颜色的窗口。到目前为止,一切都在一个线程上(据我所知;我还没有进行任何线程化)。现在,我添加了一个选项来打开一个查看器窗口,该窗口需要以尽可能低的延迟进行更新。所有这一切都需要创建一个窗口并显示它:viewer=newSkeletalViewer.MainWindow();viewer.Show();当此事件触发时,颜色窗口停止显示颜色(即在主线程上每秒触发30次的事件停止触发),但查看器显示完美。我希望同时更新查看器和颜色窗口。从阅读其他问题来看,解决方案听起来像是在新线程上创建查看器。不过,我在这方面遇到了很多问题。当我点击按

c# - 从事件处理程序在主线程中执行一个方法

我有一个继承自Queue类的自定义Queue类。它有一个事件ItemAdded。在此事件的事件处理程序中,我正在执行一个方法。但是它在主线程之外运行,尽管我希望它在主线程中运行。我不知道该怎么做。有什么建议吗?//MycustomclassusingSystem;usingSystem.Collections;//Requiredtoinheritnon-genericQueueclass.namespaceQueueWithEvent{publicclassSmartQueue:Queue{publicdelegatevoidItemAddedEventHandler(objects

c# - Reactive Extensions (Rx) 可以跨进程或机器边界使用吗?

依稀记得很久以前看到过一些关于这个的讨论,但从那以后就再也没有听到过任何消息。那么基本上您可以在远程机器上订阅IObservable吗? 最佳答案 您可以使用IObservable.Remotable通过.NETRemoting直接从其他机器使用可观察对象。 关于c#-ReactiveExtensions(Rx)可以跨进程或机器边界使用吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questi

c# - 在线程中访问 UI

当我尝试更改UI属性(特别是启用)时,我的线程抛出System.Threading.ThreadAbortException如何在线程中访问UI。 最佳答案 您可以使用BackgroundWorker,然后像这样更改UI:control.Invoke((MethodInvoker)delegate{control.Enabled=true;}); 关于c#-在线程中访问UI,我们在StackOverflow上找到一个类似的问题: https://stackov

c# - 在编程中实现数学方程式时遇到问题

我正在为学校实现一个算法,但在理解定积分在编程中的表示方式时遇到了问题。例如,我知道求和方程可以用下面的例子来实现:假设y=f(x)if(x==0){y=x+1;}else{for(inti=0;i然后我将如何表示一个数值积分,例如:此处设置的方程式可能没有数学意义,但我的目标是在c#中为我必须执行的学校编程项目实现类似的方程式,在该项目中我必须实现包含积分的算法。我一直在读到有数值方法可以解决定积分,例如辛普森规则;我是否必须使用此类方法来实现方程,或者可以在编程中表示积分,例如循环或类似的东西? 最佳答案 这取决于你想做什么。如

c# - 我应该使用哪种方法来感知计算机在编程中的思考?

我想创建一个简单的游戏,例如tictactoe,让人类用户与计算机对战。计算机功能需要几毫秒才能运行,但我想给出计算机需要5秒才能移动的感觉。我应该使用哪种方法?1)创建两个内存线程。一种用于计算机,一种用于人类用户。当计算机用5秒模仿思考时,人类用户线程暂停5秒。2)使用计时器或调度器计时器禁用输入设备5秒3)你能想到的任何更好的方法..谢谢!编辑-问题是关于如何以及现在是为什么。5秒只是一个例子。我更喜欢1-2秒,但出于示例目的,我只选择了5秒。所以请关注执行此操作的最佳方法,而不是5秒。再次感谢。 最佳答案 噪音和闪烁的灯光=

c# - 在 .NET 中是否有用于长时间运行线程的线程调度程序?

我们的场景是网络扫描仪。它连接到一组主机并使用低优先级后台线程并行扫描它们一段时间。我希望能够安排大量工作,但只能同时扫描任意给定的10台或任意数量的主机。即使我创建自己的线程,许多回调和其他异步优点也会使用ThreadPool,我最终会耗尽资源。我应该看看MonoTorrent...如果我使用THEThreadPool,我能否将我的应用程序限制为某个数量,以便为应用程序的其余部分顺利运行留出足够的空间?是否有一个线程池可以初始化为n个长期存在的线程?[编辑]似乎没有人注意到我对一些回复做了一些评论,所以我将在此处添加一些内容。线程应该是可取消的优雅而有力。线程应具有低优先级,让GUI