大家好,
我最近正在研究BackgroundWorker的CancelAsync()事件。
我做的窗体中有两个按钮。当点击“导入”按钮时,实现将EXCEL文件导入到SQL中。
现在想添加一个“取消”按钮,即终止该线程。backgroundworker
查了很多代码,发现跟我的代码思路不太一样。大家基本都是写在循环里面了,而我的代码里好像不太适合添加这种循环来实时判断CancellationPending,所以想请大家帮忙看看。
如果您能再多指点几句,那就更是感激不尽了。
多谢大家。backgroundworker
publicpartialclassForm1:Form
{
intTotal=0;
string[]FileNames;
privateBackgroundWorkerbkWorker=newBackgroundWorker();
publicForm1()
{
InitializeComponent();
bkWorker.WorkerReportsProgress=true;
bkWorker.WorkerSupportsCancellation=true;
bkWorker.DoWork+=newDoWorkEventHandler(DoWork);
bkWorker.ProgressChanged+=newProgressChangedEventHandler(ProgessChanged);
bkWorker.RunWorkerCompleted+=newRunWorkerCompletedEventHandler(CompleteWork);
}
privatevoid导入_Click(objectsender,EventArgse)
{
OpenFileDialogdlg=newOpenFileDialog();
dlg.Title="请选择要导入的文件:";
dlg.Filter="Excel文件(*.xls)|*.xls|所有文件|*.*";
dlg.Multiselect=true;
if(dlg.ShowDialog()==DialogResult.OK)
{
FileNames=dlg.FileNames;
foreach(stringFileNameinFileNames)
{
OleDbConnectionconn=newOleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;ExtendedProperties=Excel8.0;DataSource="+FileName);
conn.Open();
DataTabletable=conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,null);
for(inti=0;i<table.Rows.Count;i++)
{
stringTableName=table.Rows[i]["TABLE_NAME"].ToString();
if((TableName.Substring(TableName.Length-1,1)=="$")||(TableName.Substring(0,1)=="'"))
{
if((TableName.Substring(TableName.Length-2,1)=="$"))
{
char[]TrimChar={'\''};
TableName=TableName.Trim(TrimChar);
TableName=TableName.Substring(0,TableName.Length-1);
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-27008-1.html
一个搞互联网的能拯救中国的足球