using System.ComponentModel;
using System.IO;
namespace BackgroundWorkerDemo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
//“執行背景程序”按鈕事件
btnRun.Click += new EventHandler(btnRun_Click);
//“取消背景程序”按鈕事件
btnCancel.Click += new EventHandler(btnCancel_Click);
//是否允許BackgroundWorker 能否报告进度
bgwWorker.WorkerReportsProgress = true;
//選擇文件按鈕方法
btnSelectFile.Click += new EventHandler(btnSelectFile_Click);
//5.2
//开始执行后台操作時
//当执行BackgroundWorker.RunWorkerAsync方法时会触发该事件,并且传递DoWorkEventArgs参数;
bgwWorker.DoWork += new DoWorkEventHandler(bgwWorker_DoWork);
//引发 ProgressChanged 事件。 ProgressChanged是负责报告当前程序进度
bgwWorker.ProgressChanged += new ProgressChangedEventHandler(bgwWorker_ProgressChanged);
//当后台操作已完成、被取消或引发异常时发生。
bgwWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bgwWorker_RunWorkerCompleted);
}
/// <summary>
/// 被選擇的文件
/// </summary>
string sFile = "";
/// <summary>
/// ProgressBar的值
/// </summary>
int iProgressValue = 1;
String fs_filename = "";
/// <summary>
/// 得到轉換后文件在服務器的絕對路徑
/// </summary>
String fs_convertedfilename = "";
/// <summary>
/// 得到選項選擇的結果(0為瀏覽)
/// </summary>
int interfaceOptions = 0;
/// <summary>
/// 選擇文件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void btnSelectFile_Click(object sender, EventArgs e)
{
//選擇文件
OpenFileDialog ofdDialog = new OpenFileDialog();
if (ofdDialog.ShowDialog()==DialogResult.OK)
{
sFile = ofdDialog.FileName;
string sFilePathName = Path.GetDirectoryName(sFile) +"\\"+ Path.GetFileNameWithoutExtension(sFile);
txtSelect.Text = sFile;
fs_filename = sFile;
//得到轉換后的文件名
fs_convertedfilename = sFilePathName + ".swf";
}
}
/// <summary>
/// “執行背景程序”按鈕事件的方法
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void btnRun_Click(object sender, EventArgs e)
{
string sFile = "";
//开始执行任务,會触发DoWork事件
bgwWorker.RunWorkerAsync(sFile);
}
/// <summary>
/// “取消背景程序”按鈕事件的方法
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void btnCancel_Click(object sender, EventArgs e)
{
if (bgwWorker.IsBusy)
{
//取消操作
bgwWorker.CancelAsync();
txtResult.Text += "已取消";
}
}
/// <summary>
/// 开始执行后台操作時
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void bgwWorker_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker bgwValue = (BackgroundWorker)sender;
//報告進度(進度值需自己傳入)
bgwWorker.ReportProgress(iProgressValue);
//5.3
//運行需要運行的方法。
RunPrint2Falsh();
if ( RunPrint2Falsh()==true)
{
bgwWorker.ReportProgress(100);
}
}
/// <summary>
/// 背景程序进度方法
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void bgwWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
//5.4
//設置ProgressBar設
pgbValue.Value = e.ProgressPercentage;
}
/// <summary>
/// 背景程序運行完成事件方法
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void bgwWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
//5.5
txtResult.Text += "完成!";
}
/// <summary>
/// 運行將文件轉換成Flash程序(此處引用了Print2Flash控件)
/// </summary>
/// <returns></returns>
private bool RunPrint2Falsh()
{
bool sRetrun = false;
try
{
P2F.Server2 p2fServer = new P2F.Server2();
p2fServer.DefaultProfile.InterfaceOptions = interfaceOptions;
p2fServer.ConvertFile(fs_filename, fs_convertedfilename, null, null, null);
sRetrun = true;
}
catch (Exception ex)
{
throw ex;
}
return sRetrun;
}
}
}
BackgroundWorker例子
最新推荐文章于 2019-05-17 09:16:20 发布