当前注册人数422301人 邮箱: 密码: 注册新用户 忘记密码
首页 C/C++/MFC C# ASP.NET VB.NET MATLAB Android   站内搜索 下载代码说明/积分规则
为什么要注册?

1. 可以直接免费从本站下载代码,防止邮件发送不到您的邮箱,或登录不了国外网站

2. 可以设定关键字,当有您关心的代码收录时,邮件通知您

3. 对这里的代码进行评分和评论

4. 可以和大家一起分享你的源代码,得到更多的建议

Getting Around InvokeRequired Without Copy and Paste

.NET多线程程序中不再需要多次拷贝粘贴InvokeRequired代码段的控件

2008年02月28日
C#, C# 2.0, C# 3.0, Windows, .NET, Win2K, WinXP, Win2003, Vista, .NET 3.0, .NET 2.0, VS, WinForms, VS2005, Dev
在你的.NET多线程程序中,比如在C#写的基于WinForm的多线程程序里,你可能总是需要在每个Invoke都线程体里拷贝粘贴if(InvokeRequired)代码段,这个程序可以让你避免这一麻烦,而,只是需要在函数开头加上[RunInUIThread]就可以了。通过这么简单的方法实现线程中界面安全代码,就更为简单了,或许这个确实应该让微软知道,以便在下一版本中加入这一功能。
相关知识

以前的代码:

 

public delegate void DoThreadedGoodManualType();
/// 
/// This is good behavior, but this manual invoke required junk to be
/// done every time
/// 
private void DoThreadedGoodManual()
{
    if (this.InvokeRequired)
    {
        // Pass the same function to BeginInvoke, but the call would come on
        // the correct thread and InvokeRequired will be false.
        this.BeginInvoke(new DoThreadedGoodManualType(DoThreadedGoodManual));
        return;
    }
    DoThreadedBad(); //now we can do our normal functionality with no worries
}

现在的代码:

 

[RunInUIThread]
protected virtual void DoThreadedGoodAOP()
{
    DoThreadedBad();
}
源代码原文下载:
Getting Around InvokeRequired Without Copy and Paste Instead of copying and pasting the same if(InvokeRequired) logic in every multithreaded function, use attributes to make code cleaner, its centralize logic and make it self documenting.

源码图片

从本站下载附件及源代码(1个附件,已经成功下载354次)

最值得关注的外文源代码

An Alternate Way of Writing a Multithreaded GUI in C#
An Alternate Way of Writing a Multithreaded GUI in C#
MyGeneration Code Generator
Instantly Changing Language in the Form
评论(评论是增加积分的一个有效途径)
字数在300字内
请如实评论
本源代码共评论66次,此处显示最近20次评论! 查看所有评论

hzxiaozhou  2015年06月21日
好东西
wtujoxk  2014年07月15日
很好
逆天子  2014年03月27日
顶!
  2013年07月22日
现在挣钱,现在就花
osric  2013年07月22日
很好
lamborghini  2013年05月02日
bucuo
lovecode  2012年11月27日
多线程用于处理多任务时非常有用
rosysky  2012年10月23日
看看。
flyer123  2012年09月28日
都说好,那我就来看看.是不是C#的源码
hychong  2012年04月30日
想下下来看看是怎么实现的,听起来挺方便的!
wwwwww  2012年03月15日
谢谢分享。
guisu  2011年12月08日
谢谢,很好
savvy0307  2011年02月06日
这个不错~~~
lnht  2010年05月02日
很好很好!!正在学习这个!
alias  2009年11月27日
verygood
net_scan  2009年10月16日
很好很强大
魔术师  2009年05月24日
学习学习!!!!!!!!!!!!!
shouwu345  2009年04月22日
很好的啊!!!
shouwu345  2009年04月22日
很好的啊!!!
vigi2008  2009年04月19日
我早就被多线程的界面程序程序之间InvokeRequired,看看这个如何
字数在300字内
请如实评论
200万国内源码搜索
CopyRight (C) codesoso.com 2007-2009 All Rights Reserved zhihuishi   免责声明