邙山之巅 承接网站建设 + 网站推广 + 网站优化 + IDC + 网络广告等业务。

本博客网页模板,经过SEO优化和测试, 保证其 完整性 + 无错性 + 美观性 + 最简性 !
完整性 -头部尾部完整,首页,列表,内容完整.无错性 -整站模板安装即可使用,Js无错误,兼容IE6,IE7,ie8,FF
美观性 -整体协调,美观大方,配色合理.最简性 -采取DIV+CSS布局,整站无垃圾代码,架构合理,减少下载时间,节省带宽

MSDN线程安全示例

时间:2012-11-09 12:58来源:未知 作者:admin 点击:
using System; 
using System.ComponentModel; 
using System.Threading; 
using System.Windows.Forms; 
   
namespace CrossThreadDemo 
{ 
    public class Form1 : Form 
    { 
        // This delegate enables asynchronous calls for setting 
        // the text property on a TextBox control. 
        delegate void SetTextCallback(string text); 
   
        // This thread is used to demonstrate both thread-safe and 
        // unsafe ways to call a Windows Forms control. 
        private Thread demoThread = null; 
   
        // This BackgroundWorker is used to demonstrate the  
        // preferred way of performing asynchronous operations. 
        private BackgroundWorker backgroundWorker1; 
   
        private TextBox textBox1; 
        private Button setTextUnsafeBtn; 
        private Button setTextSafeBtn; 
        private Button setTextBackgroundWorkerBtn; 
   
        private System.ComponentModel.IContainer components = null; 
   
        public Form1() 
        { 
            InitializeComponent(); 
        } 
   
        protected override void Dispose(bool disposing) 
        { 
            if (disposing && (components != null)) 
            { 
                components.Dispose(); 
            } 
            base.Dispose(disposing); 
        } 
   
        // This event handler creates a thread that calls a  
        // Windows Forms control in an unsafe way. 
        private void setTextUnsafeBtn_Click( 
            object sender,  
            EventArgs e) 
        { 
            this.demoThread =  
                new Thread(new ThreadStart(this.ThreadProcUnsafe)); 
   
            this.demoThread.Start(); 
        } 
   
        // This method is executed on the worker thread and makes 
        // an unsafe call on the TextBox control. 
        private void ThreadProcUnsafe() 
        { 
            this.textBox1.Text = "This text was set unsafely."; 
        } 
   
        // This event handler creates a thread that calls a  
        // Windows Forms control in a thread-safe way. 
        private void setTextSafeBtn_Click( 
            object sender,  
            EventArgs e) 
        { 
            this.demoThread =  
                new Thread(new ThreadStart(this.ThreadProcSafe)); 
   
            this.demoThread.Start(); 
        } 
   
        // This method is executed on the worker thread and makes 
        // a thread-safe call on the TextBox control. 
        private void ThreadProcSafe() 
        { 
            this.SetText("This text was set safely."); 
        } 
   
        // This method demonstrates a pattern for making thread-safe 
        // calls on a Windows Forms control.  
        // 
        // If the calling thread is different from the thread that 
        // created the TextBox control, this method creates a 
        // SetTextCallback and calls itself asynchronously using the 
        // Invoke method. 
        // 
        // If the calling thread is the same as the thread that created 
        // the TextBox control, the Text property is set directly.  
   
        private void SetText(string text) 
        { 
            // InvokeRequired required compares the thread ID of the 
            // calling thread to the thread ID of the creating thread. 
            // If these threads are different, it returns true. 
            if (this.textBox1.InvokeRequired) 
            {    
                SetTextCallback d = new SetTextCallback(SetText); 
                this.Invoke(d, new object[] { text }); 
            } 
            else
            { 
                this.textBox1.Text = text; 
            } 
        } 
   
        // This event handler starts the form's  
        // BackgroundWorker by calling RunWorkerAsync. 
        // 
        // The Text property of the TextBox control is set 
        // when the BackgroundWorker raises the RunWorkerCompleted 
        // event. 
        private void setTextBackgroundWorkerBtn_Click( 
            object sender,  
            EventArgs e) 
        { 
            this.backgroundWorker1.RunWorkerAsync(); 
        } 
           
        // This event handler sets the Text property of the TextBox 
        // control. It is called on the thread that created the  
        // TextBox control, so the call is thread-safe. 
        // 
        // BackgroundWorker is the preferred way to perform asynchronous 
        // operations. 
   
        private void backgroundWorker1_RunWorkerCompleted( 
            object sender,  
            RunWorkerCompletedEventArgs e) 
        { 
            this.textBox1.Text =  
                "This text was set safely by BackgroundWorker."; 
        } 
   
        #region Windows Form Designer generated code 
   
        private void InitializeComponent() 
        { 
            this.textBox1 = new System.Windows.Forms.TextBox(); 
            this.setTextUnsafeBtn = new System.Windows.Forms.Button(); 
            this.setTextSafeBtn = new System.Windows.Forms.Button(); 
            this.setTextBackgroundWorkerBtn = new System.Windows.Forms.Button(); 
            this.backgroundWorker1 = new System.ComponentModel.BackgroundWorker(); 
            this.SuspendLayout(); 
            //  
            // textBox1 
            //  
            this.textBox1.Location = new System.Drawing.Point(12, 12); 
            this.textBox1.Name = "textBox1"; 
            this.textBox1.Size = new System.Drawing.Size(240, 20); 
            this.textBox1.TabIndex = 0; 
            //  
            // setTextUnsafeBtn 
            //  
            this.setTextUnsafeBtn.Location = new System.Drawing.Point(15, 55); 
            this.setTextUnsafeBtn.Name = "setTextUnsafeBtn"; 
            this.setTextUnsafeBtn.TabIndex = 1; 
            this.setTextUnsafeBtn.Text = "Unsafe Call"; 
            this.setTextUnsafeBtn.Click += new System.EventHandler(this.setTextUnsafeBtn_Click); 
            //  
            // setTextSafeBtn 
            //  
            this.setTextSafeBtn.Location = new System.Drawing.Point(96, 55); 
            this.setTextSafeBtn.Name = "setTextSafeBtn"; 
            this.setTextSafeBtn.TabIndex = 2; 
            this.setTextSafeBtn.Text = "Safe Call"; 
            this.setTextSafeBtn.Click += new System.EventHandler(this.setTextSafeBtn_Click); 
            //  
            // setTextBackgroundWorkerBtn 
            //  
            this.setTextBackgroundWorkerBtn.Location = new System.Drawing.Point(177, 55); 
            this.setTextBackgroundWorkerBtn.Name = "setTextBackgroundWorkerBtn"; 
            this.setTextBackgroundWorkerBtn.TabIndex = 3; 
            this.setTextBackgroundWorkerBtn.Text = "Safe BW Call"; 
            this.setTextBackgroundWorkerBtn.Click += new System.EventHandler(this.setTextBackgroundWorkerBtn_Click); 
            //  
            // backgroundWorker1 
            //  
            this.backgroundWorker1.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.backgroundWorker1_RunWorkerCompleted); 
            //  
            // Form1 
            //  
            this.ClientSize = new System.Drawing.Size(268, 96); 
            this.Controls.Add(this.setTextBackgroundWorkerBtn); 
            this.Controls.Add(this.setTextSafeBtn); 
            this.Controls.Add(this.setTextUnsafeBtn); 
            this.Controls.Add(this.textBox1); 
            this.Name = "Form1"; 
            this.Text = "Form1"; 
            this.ResumeLayout(false); 
            this.PerformLayout(); 
   
        } 
   
        #endregion 
   
   
        [STAThread] 
        static void Main() 
        { 
            Application.EnableVisualStyles(); 
            Application.Run(new Form1()); 
        } 
   
    } 
}

 

(责任编辑:admin)
首页 - 技术交流 - 生活感悟 - 影视音乐 - 网址导航 - 图片收藏 - 实用工具 - 网站地图 - 百度地图 - RSS地图
邙山之巅:软件攻城师,互联网砖家,山水田园诗人,著名的思想家,政治家,文学家。
是中华人民共和国合法公民,在计算机软件方面有较高造诣。著有《放羊的那些事》一书,书中描绘了自己童年时代放羊的美好时光,
告诫人们要保护环境,否则以后只能在上海的南京路上放羊了。同时脑细胞异常活跃,经常胡思乱想,目前正在思考如何解决“欧债危机”和“美债危机”这两个世界级难题。
邙山之巅:从小就饱读诗书,学前班连上五年,破世界吉尼斯纪录,因此基础知识功底非常深厚。7岁能够看懂A片,8岁可以腾云吐雾,9岁号称千杯不倒,10岁已然有了一次轰轰烈烈的恋爱。此时此刻,很多东西对他来说早已是风轻云淡。后来考取了美国法克由大学的全能博士学位,成为华人中获得此高等学位的第一人。
在计算机方面的成就:精通C,C++,C#,JAVA,PHP,ASP,VB,DELPHI,ORACLE,MYSQL等。尤其精通网页前后台,设计,DIV+CSS,PHP+MYSQL,js,以及各种流行CMS。
新公司堆积3个月的活,被其一周干完。曾因技术过强,工作效率过高,而遭人嫉妒。 政治学方面成就:成功收复台湾,维护了台海稳定。
经济学方面的成就:帮助世界各国成功度过经济危机,并且成功预测了后经济危机时代的到来。 文学方面的成就:著《放羊的那些事》,以及10篇评论性文章,均未发表或出版。
Copyright ◎ 2012-2022 lixinwei.cn 邙山之巅 版权所有
豫ICP备17045676号-1 给我写信