【C#线程基础】教程文章相关的互联网学习教程文章

c# – 从线程中加速实时Gui更新【代码】

这是我多年来用来接收网络数据并在我的GUI(对话框,表单等)中使用它的技术.public delegate void mydelegate(Byte[] message);public ReceiveEngineCS(String LocalIpIn, String ReceiveFromIp, mydelegate d){this.m_LocalIpIn = LocalIpIn;this.m_ReceiveFromIp = ReceiveFromIp;m_MainCallback = d;SetupReceive();m_Running = true;//Create the Track receive thread and pass the parent (this)m_RtdirReceiveThread = new Th...

c# – Silverlight:将服务调用和文件处理移动到后台线程【代码】

ProcessFile()是在UIThread上运行还是在单独的线程上运行.如果它在UIThread上,如何将文件请求和ProcessFile()移动到单独的线程?var xClient = new ServiceReference1.Service1SoapClient();xClient.Retrieve_File_Completed += new EventHandler<ServiceReference1.Retrieve_File_CompletedCompletedEventArgs>(xClient_Retrieve_File_Completed); . .//called on Page load foreach(fileName in fileNames) {xClient.Retrieve_Fi...

c# – 了解非阻塞线程同步和Thread.MemoryBarrier【代码】

在这个线程在线书籍:http://www.albahari.com/threading/part4.aspx 这是Thread.MemoryBarrier()的一个例子class Foo {int _answer;bool _complete;void A(){_answer = 123;Thread.MemoryBarrier(); // Barrier 1_complete = true;Thread.MemoryBarrier(); // Barrier 2}void B(){Thread.MemoryBarrier(); // Barrier 3if (_complete){Thread.MemoryBarrier(); // Barrier 4Console.WriteLine (_answer);}} }我们讨...

c# – 等待后台线程完成【代码】

很抱歉,如果这是重复的,但我不太确定我需要使用哪些术语来查找此问题的现有答案. 我正在尝试提高应用程序的启动性能,伪代码看起来有点像这样.LoadBigFileFromDisk(); //slow SetupNetwork(); //even slower UseBigFileFromDisk();我认为第一步是磁盘绑定,另一个是网络绑定(和更慢),我可以在后台线程中运行第一步(当前正在使用ThreadPool.QueueUserWorkItem,但不确定这是否是最好的方法)和稍微提高性能. 它有效,但令我担心...

c# – 当从另一个线程抛出异常时写入堆栈跟踪

如何将未处理的异常(从任何线程抛出)的堆栈跟踪写入文件? 我需要这个来帮助调试挂起的应用程序.解决方法:看看AppDomain.UnhandledException 活动.看来这正是你所需要的.

C#和任务 – UI线程挂起 – 预异步/等待关键字【代码】

当我无法访问我用来检索数据的客户端lib时,我试图理解异步获取一组数据的正确代码是什么.我指定了一个端点和一个日期范围,我应该检索一个播放列表列表.我现在所拥有的东西在Start()调用之后永远不会回来.注意:这是在WinForm中运行的.我试图更好地理解任务,而不只是想跳到等待或BackgroundWorker.我知道我在某个地方迷路了.private void GoButtonClick(object sender, EventArgs e){string baseUrl = "http://someserver/api";var ...

c# – 多个线程设置ServicePointManager.ServerCertificateValidationCallback是否安全?【代码】

要忽略ssl证书错误,我在进行HttpWebRequest之前在静态方法中设置ServicePointManager.ServerCertificateValidationCallback.我只希望对内部请求执行此操作,因此我将属性重置为finally块中的默认值.但是因为它是一个Web应用程序,当多个线程修改属性时会出现问题吗? 这是我如何使用该属性public static String GetResource() {try{ ServicePointManager.ServerCertificateValidationCallback += delegate { return true; }; ...

c# – 如果我确保两个线程永远不会并行运行,我还是要让我的列表变量挥发吗?【代码】

想象一下,我有这个代码,我可以在Windows窗体中找到计时器产生一些线程 – 但我确保只运行一个线程以下方法(由here的答案之一 – 由马特约翰逊表示): nb:我们假设现在这种_executing方法有效,我不使用backgroundworker等.private volatile bool _executing;private void TimerElapsed(object state) {if (_executing)return;_executing = true;if(smth){Thread myThread = new Thread(MainThread1);myThread.IsBackground = true;...

c# – 多线程问题更新值【代码】

我很难理解为什么多线程在线程完成之前无法更新值.单独的线程是否有自己的引用或值副本? 如果没有,根据我的理解,调用MyMethod时下面的代码应该可以正常工作,但是在thread.IsAlive变为false之前,它通常不会在数组中创建一些MyType对象的实例:class MyClass {static MyType[] obj = new MyType[Environment.ProcessorCount - 1];void MyMethod(){Thread[] threads = new Thread[Environment.ProcessorCount - 1];for (int i = 0; i...

c# – 哪个组件在ASP.NET Core中处理线程分配?

在以前的asp.net版本中,框架负责从线程池中分配所有线程,并且web.config中有一个配置来设置它(最大线程数等).那么哪个组件在新的ASP.NET中负责呢?我没有找到任何特殊的中间件,我想它应该发生在中间件之前,也许在Kestrel中.解决方法:线程池是一个CLR资源,可以直接在Startup https://msdn.microsoft.com/en-us/library/system.threading.threadpool%28v=vs.110%29.aspx中配置. 我认为您实际要问的是配置服务器将用于处理请求的线程数...

c# – 任务并行库与本机线程同步

这个问题可能是主观的,但我只想知道何时使用TPL以及何时使用基于本机线程的同步(evnts,等待句柄). 本机线程同步技术将在未来过时吗? 谢谢解决方法:尽可能使用TPL,因为它是一种更清晰,更具声明性的方式来表达您对并行性的需求. MSDN解释说“TPL动态地扩展并发度,以最有效地使用所有可用的处理器.此外,TPL处理工作的分区,ThreadPool上的线程调度,取消支持,状态管理等低级细节.通过使用TPL,您可以最大限度地提高代码的性能,同时专注于...

c# – 启动异步线程的当前和推荐方法是什么?【代码】

我有一个ASP.NET MVC 3(.NET 4)Web应用程序. 我有一个[HttpPost]动作方法,它将一些数据提交给数据库. 现在,在这个方法完成持久到存储库后,我希望执行“后台”任务(想想审计,或发送电子邮件等),我不关心结果(除非发生错误,其中我将执行日志记录). 我怎么能/应该从我的行动方法中解雇这个任务?[HttpPost] [Authorize] public ActionResult Create(MyViewModel model) {if (ModelState.IsValid){_repo.Save(model); // TODO: Fire of...

c# – 多个线程在等待一个事件?【代码】

我想要的是AutoResetEvent的等效,多个线程可以等待,所有这些都在设置时恢复. 我知道这可以通过为每个线程设置一个AutoResetEvent并设置每个线程来实现 – 但是有更简单的方法吗?一种不依赖于事件句柄数组的方法? 有效的(我认为)我希望能够做到这一点:private volatile string state; private MultiEventHandle stateChanged = new MultiEventHandle();public void WaitForBlob() {while (true){object saved = stateChanged.Cur...

c# – 多个UI线程 – Winforms【代码】

我想在我的应用程序中创建多个UI线程.我已经模拟了如下方案.我正在后台线程中单击按钮创建一个新窗口/窗体namespace WindowsFormsApplication1 {public partial class Form1 : Form{public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){var thread = new Thread(() =>{Form f = new Form();Application.Run(f);});// thread.IsBackground = true; -- Not required. See Solution below...

c# – WPF控件在单独的UI线程上?【代码】

我现在正在制作一个媒体播放器..我已经添加了一个实时搜索功能来搜索歌曲等等(有些东西,如WMP实时搜索),即当你输入关键字时,搜索就会发生. 在搜索过程中,访问数据库并加载IEnumerable是通过BackGroundProcess在另一个线程上完成的.通过调用UIElement的调度程序来更新UI. 这个过程相当快,但是当您在文本框中输入搜索关键字时,似乎存在一个小的延迟,这是因为Listbox.ItemSource更新需要一些时间.也就是说你要搜索“Adele”,当你输入“...