// 此过程用来执行 DTS 包
private void DTSRun()
{
try
{
// 实例化一个DTS包对象
DTS.Package2Class package = new DTS.Package2Class();
// 委托事件 用来记录运行DTS过程中生成的日志
this.package.OnProgress += new DTS.PackageEvents_OnProgressEventHandler(package_OnProgress);

object pVarPersistStgOfHost = null;
        
// 打开DTS包 名为"数据传输"
package.LoadFromSQLServer("donck","sa","123456",DTS.DTSSQLServerStorageFlags.DTSSQLStgFlag_Default,null,null,null,"数据传输", ref pVarPersistStgOfHost);
// 给 DTS 中全局变量 dstFileName 负值,例如: dstFileName=C:\mydat.mdb
package.GlobalVariables.Item("dstFileName").let_Value(CurrentPath + "\\mydat.mdb"); // 执行包
package.Execute();
// 释放包
package.UnInitialize();
package = null; } catch(System.Runtime.InteropServices.COMException ex)
{
EventLog.WriteEntry("TestSource","Error Code : "  + ex.ErrorCode + "Error Message :" + ex.Message + " Stack Trace : " +  ex.StackTrace);
} catch(System.Exception ex)
{
EventLog.WriteEntry("TestSource", "Error Message :" + ex.Message + " Stack Trace : " +  ex.StackTrace);
}
}private void package_OnProgress(string EventSource, string ProgressDescription, int PercentComplete, int ProgressCountLow, int ProgressCountHigh)
{
// 将 DTS 运行过程中发生的消息,写入 WINDOWS 系统日志
EventLog.WriteEntry("TestSource"," In OnProgress  : Event Source  : "  + EventSource +
" Progress Description : " + ProgressDescription +
" PercentComplete : " + PercentComplete + 
" ProgressCountLow : " + ProgressCountLow +
" ProgressCountHigh : " + ProgressCountHigh);
//this.textBox2.Text += "|";
}我的问题是:
1、以下三条语句不会被执行。经过加断点测试,断点处没有触发。
// 释放包
package.UnInitialize();
package = null;2、如果在 private void package_OnProgress 中增加 “ this.textBox2.Text += "|"; ” 语句,程序将会出现死锁,点任意键都没有反应,只能结束任务。
关于这个问题我测试了很多
如果写成  
Console.WriteLine("|");
EventLog.WriteEntry("TestSource","|");
都不会出现问题,只有操作控件属性的时候发生死锁,类如:
this.label1.text="asdf";各位大侠不知能否帮我,小弟谢过!