关于.net(C#)中的跨进程访问的问题_asp.net教程-查字典教程网
关于.net(C#)中的跨进程访问的问题
关于.net(C#)中的跨进程访问的问题
发布时间:2016-12-29 来源:查字典编辑
摘要:namespaceprocess_image{publicpartialclassjszg_upload:Form{staticboolst...

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 线程中访问。

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新asp.net教程学习
    热门asp.net教程学习
    编程开发子分类