首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.NET: Reflector中的控件调用()

.NET: Reflector中的控件调用()
EN

Stack Overflow用户
提问于 2010-05-09 19:03:06
回答 3查看 482关注 0票数 1

所以,我回到了一些.NET编程中,通过VS.NET 2010中的一个新特性,它检测到一种情况,即我试图从一个没有创建该控件的线程中修改一个控件,并向我介绍了一篇关于MSDN如何正确地实现此操作的文章.

代码语言:javascript
复制
' HOW TO WRITE TO A FORM CONTROL FROM A THREAD THAT DIDN'T CREATE THE CONTROL
' ===========================================================================
' Say you need to write to a UI text box that logs stuff...
Delegate Sub WriteLogDelegate(ByVal [text] As String)
Private Sub WriteLog(ByVal [text] As String)
    If Me.rtfLog.InvokeRequired Then
        ' We are not in the same thread!
        ' Create new WriteLogDelegate and invoke it on the same thread
        Dim d As New WriteLogDelegate(AddressOf WriteLog)
        Me.rtfLog.Invoke(d, New Object() {[text]})
    Else
        ' We are totally in the same thread...
        ' Call AppendText like normal!
        Me.rtfLog.AppendText([text])
    End If
End Sub

我非常兴奋,因为我对如何做到这一点感到困惑已经有5年了,因为以前的vs.net版本并没有指出这一点,因为我是一个项目的本科生,而且……

嗯..。对此很抱歉。恢复了镇静。不管怎样,现在我已经了解了.NET-fu这一点,我想了解更多关于它是怎么回事以及它是如何工作的。

在哪里可以在.NET反射器中找到调用()的代码?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-05-09 23:57:39

在你的例子中,让我们列举所有发生的事情。

  1. 您显示的代码是交叉线程或多线程编程.(从dotnet开始就存在)。
  2. 您的 rtfLog 正在使用InvokeRequired的标准功能--这意味着rtfLog是从Control 继承的 2.a.控件类是Winforms结构的一部分。
  3. 达到"‘我们不在同一线程!’“的代码!您需要创建两个或多个线程

总的来说,反射器可以向您展示实现,但是您可以在文章. 中找到这样的想法。

如果您希望看到实现,只需编译一些简短的代码,如“代码诗人”中的答案,然后在反射器中查看他。(我检查这部分,反射器将显示一些非常接近原始代码的内容。)

票数 1
EN

Stack Overflow用户

发布于 2010-05-09 19:26:27

这应该是注释,但不能在注释中编码格式,所以.

如果你用的是c#,这个故事可能会变得更简单。

代码语言:javascript
复制
private void WriteLog(string text)
{
  if(InvokeRequired)
  {
    BeginInvoke(new MethodInvoker(()=>{ WriteLog(text); }));
  }
  else
  {
    rtfLog.AppendText(text);
  }
}
票数 1
EN

Stack Overflow用户

发布于 2010-05-09 19:23:10

以下是MSDN上的Control.Invoke:http://msdn.microsoft.com/en-us/library/zyzhdc6b.aspx

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2798793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档