C# 使用到了COM interop后程序不能正常退出的问题
大家好, 
 我的程序中使用到了windows   media   player   ActiveX组件,定义如下: 
 private   AxWMPLib.AxWindowsMediaPlayer   Player; 
 它在InitializeComponent中被初始化,并且被加入form的control集中 
 this.Controls.Add(this.Player);   
 form上有另外一个system.windows.forms.timer组件,它每隔一段时间就会调用t_Tick方法 
 void   t_Tick(object   sender,   EventArgs   e)   
 在该方法中,我判断一组条件,然后决定是否退出程序,这组条件对该问题没有影响,所以我就不说了。如果条件为真,那么就会执行如下代码 
 this.Dispose(true); 
 GC.SuppressFinalization();   
 我的Dispose是这样的 
 protected   override   void   Dispose(   bool   disposing   ) 
 { 
                                     if   (disposing) 
                                     { 
                                                 if   (components   !=   null) 
                                                 { 
                                                             components.Dispose(); 
                                                 } 
                                     } 
                                     try 
                                     { 
                                                 //   remove   the   player   from   form   control   list,   so   the   form   could   be   disposed 
                                                 this.Controls.Remove(Player); 
                                                 //   release   the   player   com   object 
                                                 Marshal.ReleaseComObject(Player.GetOcx()); 
                                                 base.Dispose(disposing); 
                                     } 
                                     catch 
                                     { 
                                     } 
 }   
 我在其中用ReleaseComObject方法释放掉COM组件。   
 Dispose被执行完之后,就会执行到Main函数 
 static   void   Main(string[]   args)    
 		{ 
                                     //   Adds   event   handler   to   catch   any   exceptions   that   happen 
                                     AppDomain.CurrentDomain.UnhandledException   +=   new   UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);   
                                     try 
                                     {