jjzjj

c# - 未经授权的访问异常 : Invalid cross-thread access in Silverlight application (XAML/C#)

C#相对较新,想尝试使用它来使用一些第三方Web服务API。这是XAML代码这是C#代码privatevoidButton_Click(objectsender,RoutedEventArgse){HttpWebRequestrequest=(HttpWebRequest)WebRequest.Create("http://api.twitter.com/1/users/show/keykoo.xml");request.Method="GET";request.BeginGetResponse(newAsyncCallback(twitterCallback),request);}p

c# - Thread.Sleep(timeout) 和 ManualResetEvent.Wait(timeout) 有什么区别?

Thread.Sleep(timeout)和resetEvent.Wait(timeout)都会导致执行暂停至少timeout毫秒,那么它们之间有区别吗?我知道Thread.Sleep导致线程放弃其时间片的剩余部分,因此可能导致sleep持续时间比请求的时间长得多。ManualResetEvent对象的Wait(timeout)方法是否有同样的问题?编辑:我知道ManualResetEvent的要点是从另一个线程发出信号-现在我只关心事件的Wait方法指定超时的情况,并且没有其他来电者设置事件。我想知道按时唤醒是否比Thread.Sleep更可靠 最佳答案

c# - 在 C# 中实现生产者/消费者模式

如何使用事件和委托(delegate)在C#中实现生产者/消费者模式?使用这些设计模式时,在资源方面需要注意什么?是否有任何我需要注意的边缘情况? 最佳答案 我知道这个帖子有点老了,但由于我有时会在搜索中遇到它,所以我决定将这个生产者-消费者代码分享给那些想知道如何实现简单的通用生产者-消费者作业队列的人。Job类用于以委托(delegate)的形式“存储”对象的方法调用。然后在处理作业时调用委托(delegate)。任何相关的参数也存储在这个Job类中。通过这个简单的模式,可以在入队和出队过程中实现多线程。实际上这只是最简单的部分

c# - ManualResetEventSlim : Calling . Set() 后跟 .Reset() 不会释放 *任何* 等待线程

ManualResetEventSlim:调用.Set()后立即调用.Reset()不会释放任何等待线程(注意:ManualResetEvent也会发生这种情况,而不仅仅是ManualResetEventSlim。)我在发布和Debug模式下都尝试了下面的代码。我在四核处理器上运行的Windows764位上使用.Net4作为32位版本运行它。我从VisualStudio2012编译它(因此安装了.Net4.5)。在我的系统上运行它时的输出是:Waitingfor20threadstostartThread1started.Thread2started.Thread3started.Th

c# - 如何在 C#(托管代码)中获取 *THREAD* 的 CPU 使用率和/或 RAM 使用率?

我知道如何获取进程的CPU使用率和内存使用率,但我想知道如何在每个线程级别上获取它。如果最好的解决方案是进行一些P调用,那也很好。我需要的例子:ThreadmyThread=Thread.CurrentThread;//sometimelaterinsomeotherfunction...Console.WriteLine(GetThreadSpecificCpuUsage(myThread)); 最佳答案 如前所述,无法回答内存使用情况,因为这是整个进程的一个属性,但CPU使用情况:Processp=Process.GetCurr

c# - 线程信号基础

在C#中如何实现线程信号? 最佳答案 这是为您定制的控制台应用程序示例。这不是一个很好的现实世界场景,但线程信号的使用是存在的。usingSystem;usingSystem.Threading;classProgram{staticvoidMain(){boolisCompleted=false;intdiceRollResult=0;//AutoResetEventisonetypeoftheWaitHandlethatyoucanuseforsignalingpurpose.AutoResetEventwaitHandle=n

c# - 在 Xamarin.Forms 中使用 Thread.Sleep

我要执行以下操作MainPage=newContentPage{Content=newStackLayout{Children={newButton{Text="Thread.Sleep",Command=newCommand(()=>{Thread.Sleep(1000);MainPage.Animate("",x=>MainPage.BackgroundColor=Color.FromRgb(x,x,x));}),},newButton{Text="Task.Run+Thread.Sleep",Command=newCommand(async()=>{awaitTask.Run((

c# - 让当前线程休眠

我在一个线程(不是主线程)中有一个工作单元。在某些情况下,我想让这个线程休眠10秒。Thread.Sleep(10000)是最节省资源的方法吗? 最佳答案 IsThread.Sleep(10000)themostresourceefficientwaytodothis?是的,因为它不是忙等待而是放弃CPU。但这是在浪费一个Thread。您不应该将其扩展到许多休眠线程。 关于c#-让当前线程休眠,我们在StackOverflow上找到一个类似的问题: https

c# - 获取跨线程操作无效

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Cross-threadoperationnotvalid:ControlaccessedfromathreadotherthanthethreaditwascreatedonpublicvoidCheckUnusedTabs(stringstrTabToRemove){TabPagetp=TaskBarRef.tabControl1.TabPages[strTabToRemove];tp.Controls.Remove(this);TaskBarRef.tabControl1.TabPages.Remove

c# - System.Threading.Thread继承

是否可以继承Thread类并重写Start方法? 最佳答案 关于为什么有人要这样做:许多语言(例如Java)和/或线程API(例如Qt)允许开发人员通过从“线程”基类继承,然后重载一个方法来实现线程实现线程例程。在Qt中广泛使用了这个模型后,我实际上发现它非常方便——不是让线程以某些函数或方法为目标,这通常会导致奇怪和/或令人费解的代码,而是将整个线程包含在一个对象中。这是使用QtAPI的示例代码:classMyThread:publicQThread{Q_OBJECTprotected:voidrun();};voidMyThre