关于.net(C#)中的跨进程访问的问题

namespace process_image
{
    public partial class jszg_upload : Form
    {
        static bool stop_flag = false;

        public jszg_upload()
        {
            InitializeComponent();
        }

        private void upload_button1_Click(object sender, EventArgs e)
        {
            stop_flag = false;
          
            if (this.checkBox1.Checked)
            {
                String connectionString = "连接串";
                using (SqlConnection conn = new SqlConnection(connectionString))
                {
                    conn.Open();
                    SqlCommand cmd = new SqlCommand(" update my_jszg set filemime=null, filebody = null", conn);
                    cmd.ExecuteNonQuery();
                    conn.Close();
                }
            }

            new Thread(uploadImageToDB).Start();

        }//end upload_button1_Click


        void uploadImageToDB()
        {
            //第一步:发现文件夹下面的文件及数量
            DirectoryInfo myFolder = new DirectoryInfo("bcd");
            FileInfo[] myFiles = myFolder.GetFiles();
            this.richTextBox1.Text = "从文件夹中发现了:" + myFiles.Length.ToString() + " 个文件!" + "/n";
            this.jindutiao_progressBar1.Maximum = myFiles.Length;


            //第二步:开始上传文件
            String connectionString = "连接串";
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                conn.Open();
                for (int i = 0; i < myFiles.Length; i++)
                {
                    if(stop_flag)
                       break;

                    //进度条
                    this.jindutiao_progressBar1.Value = i + 1;
                    this.pictureBox1.ImageLocation = myFiles[i].FullName;
                    this.richTextBox1.Text = myFiles[i].Name + "/n" + this.richTextBox1.Text;
                    this.baifenbi_label1.Text = ((((i + 1) * 1.0) /myFiles.Length) * 100) + "%";

                    //上传实际的数据image/jpeg
                    SqlCommand cmd = new SqlCommand(" update my_jszg set filemime='image/jpeg', filebody = @myfilebody from my_jszg where 证件号码=@myzjhm", conn);
                    byte[] fb = new byte[myFiles[i].Length];
                    BinaryReader br = new BinaryReader(myFiles[i].OpenRead());
                    br.Read(fb, 0, (int)myFiles[i].Length);
                    cmd.Parameters.AddWithValue("@myfilebody", fb);
                    cmd.Parameters.AddWithValue("@myzjhm", myFiles[i].Name.Substring(0, myFiles[i].Name.LastIndexOf('.')));
                    cmd.ExecuteNonQuery();
                    br.Close();
                   
                 }//end for
                conn.Close();
            }
           
            MessageBox.Show("所有的文件上传完毕!");
 
        }


        //停止上传
        private void stop_button_Click(object sender, EventArgs e)
        {
             stop_flag=true;

        }
    }
}

 

在此代码中,对一个控件的访问如: this.richTextBox1.Text = myFiles[i].Name + "/n" + this.richTextBox1.Text;  仅限在一个线程中,如果在两个进程中对控件访问将会出错!如不能在程序自己的线程 和 uploadImageToDB 线程中访问。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值