我不确定以下问题是否有效。为了教育自己,我只是在问。 (1)我可以以编程方式迭代所有代的GC堆吗? (2)是否可以通过启动线程来观察GC如何对我的组件进行操作?
我有一个按钮“刷新”,每次我点击它我希望我的backgroundworker对象工作。 我用 if (main_news_back_worker.IsBusy != true) { // Start the asynchronous operation. main_news_back_worker.RunWorkerAsync(); } private void main_news_back_worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { show_system_urls(urls); displayNewMes(newMes, newStock, newSource); displayOldMes(oldMes, oldStock); } 我第一次使用backgroundworker它工作得很好,也可以运行RunWorkerCompleted并完成他的工作。 但是第二次尝试运行对象时,对象的is_busy属性为’true’,我无法再次运行该对象… 每次我想运行它时,我是否需要创建一个新的背景工作者? 我该怎么做? 谢谢。
以下内容之间是否存在任何差异(性能,实施……无论如何): 一世) DllImport(“kernel32.dll”)] public extern static void Sleep(uint msec); ..然后调用睡眠function II) Thread.Sleep()
我有一个文件传输应用程序在FTP服务器之间移动文件。 任何时候我们都可以在移动中拥有数十个文件。 为了防止泛滥FTP服务器,我有一个监视器和信号量锁系统。 我的FTP客户端经常根据调用堆栈冻结在System.Net.Sockets.Socket.Receive()内的某个地方。 我没有得到例外,所以无法解决问题。 我想取消该线程,因为它阻止了其他想要使用FTP客户端的线程。 我已经考虑启动最终在新线程中调用System.Net.Sockets.Socket.Receive()并在一段时间后中止线程的方法,但我担心在线程中止后套接字将保持打开状态。 在没有响应的线程之后,有更优雅的方法来杀死和清理吗?
我们有一个内置在C#中的SmartClient,当它正在重新启动运行的PC时,它仍然保持打开状态。 这将暂停重新启动过程,除非用户首先关闭SmartClient或进行其他一些手动干预。 当基础架构团队远程安装需要重新启动计算机的新软件时,这会导致问题。 让SmartClient应用程序从Windows识别关闭/重启事件并优雅地自杀的任何想法? 更新:这是一个具有多个gui线程的高线程应用程序。 是的,多个gui线程。 它实际上是许多项目的整合,它们本身可以是独立的应用程序 – 所有这些都是从单个exe启动和管理,集中管理这些方法并跟踪这些线程。 我不相信使用后台线程是一种选择。
出于测试目的,我需要从Visual Studio 手动终止命名线程(在调试会话中) – 或者允许我这样做的任何其他工具? 但Visual Studio 2010中的Threads调试窗口在线程的上下文菜单中只有一个Freeze选项,而Sysinternal的ProcessExplorer只列出进程,而不是线程。 有没有办法手动杀死特定(正在运行)的线程?
假设我在我的代码中运行了Stopwatch ,在中间,其他一些应用程序已经改变了系统时钟(我的服务器上的域时间每秒同步)。 它会影响秒表结果吗?
我有一些我目前在静态类/方法中的代码,但我想检查它是否是线程安全的。 从我读过的内容来看,我认为这应该没问题,但我脑海中的一些事情却说它可能不是。 我的网页的数据处理阶段使用外部Web服务来创建订单记录,这可能非常慢:可能是30-40秒,可能是5或10分钟(这不在我的手中)所以我要开火返回页面返回给用户,然后启动新线程,然后在处理完成后通过电子邮件发送给用户。 这是一个静态类/方法。 如果我的所有对象都是在特定方法中创建的(除了系统默认值,这是常见的)该方法应该是线程安全的,不应该。 所以,例如,如果我有 public static class ProcessOrder() { public static int GetOrderMaxSize() { return (….gets and parses ConfigurationManager.AppSettings[“MaxOrderSize”]…); } public static bool CreateOrder(Order order) { XmlDocument xmlDoc = GetOrderXML(order); bool check = false; using (CreateOrderXML.Create xmlCo = new CreateOrderXML.Create()) { xmlCo.Timeout = 60000; System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); string xmlString = “”; […]
请看下面的代码: var splashForm = new SplashForm(); m_Thread = new Thread( () => System.Windows.Forms.Application.Run( splashForm ) ) m_Thread.Start(); // Do some initialization // … // the following method just invokes `Close()` on the right thread splashForm.Shutdown(); // Loop until the thread is no longer alive // … System.Windows.Forms.Application.Run( mainForm ); 它看起来好像一切正常:首先我看到了闪屏,后来主变形开始了。 但不知怎的,我得到了奇怪的错误,例如:图形元素(无尽的ProgressBar)没有正确显示。 编辑 :我有两个进度条,一个在启动画面上,在主窗体上。 他们都在无尽模式中表现出相同(错误)的行为:没有进步,只有纯粹的背景。 /编辑 […]
我知道我们可以改变当前线程的当前文化。 而且我知道我们无法从CurrentCulture获取TimeZoneInfo , 因为一个文化可能有许多TimeZones, 如USA 但是使用相同的技术来处理当前线程的TimeZone 。 如果我们能做出这样的事情,那将是非常好的: TimeZone.CurrentTimeZone = TimeZoneInfo.FindSystemTimeZoneById(“timezone id”);