Please do not reply to this email- if you want to comment on the bug, go to the URL shown below and enter your comments there.
Changed by [EMAIL PROTECTED] http://bugzilla.ximian.com/show_bug.cgi?id=78823 --- shadow/78823 2006-07-11 17:07:36.000000000 -0400 +++ shadow/78823.tmp.11224 2006-07-11 17:07:36.000000000 -0400 @@ -0,0 +1,139 @@ +Bug#: 78823 +Product: Mono: Class Libraries +Version: 1.1 +OS: other +OS Details: Ubuntu +Status: NEW +Resolution: +Severity: +Priority: Normal +Component: Windows.Forms +AssignedTo: [EMAIL PROTECTED] +ReportedBy: [EMAIL PROTECTED] +QAContact: [EMAIL PROTECTED] +TargetMilestone: --- +URL: +Summary: Splash implementation hangs + +Description of Problem: +This splash screen implementation hangs mono completely. + +Steps to reproduce the problem: +1. Compile the following code: + +using System; +using System.Threading; +using System.Windows.Forms; + +namespace SplashTest +{ + public sealed class AppStart + { + private static SplashForm splash; + private static ThreadStart showSplash; + private static Thread myThread; + private static ApplicationContext context; + + [STAThread] + static void Main() + { + context = new ApplicationContext(); + Application.Idle += new EventHandler(AppIdle); + + showSplash = new ThreadStart(AppStart.ShowSplash); + myThread = new Thread(showSplash); + + myThread.IsBackground = true; + myThread.ApartmentState = ApartmentState.STA; + myThread.Start(); + + Application.Run(context); + } + + public static void ShowSplash() + { + splash = new SplashForm(); + Application.Run(splash); + } + + private static void AppIdle(object sender, EventArgs e) + { + if(context.MainForm == null) + { + context.MainForm = new MainForm(); + context.MainForm.Show(); + Application.DoEvents(); + + CleanUpSplash(); + Application.Idle -= new +EventHandler(AppIdle); + } + } + + private static void CleanUpSplash() + { + if (myThread == null) return; + if (splash == null) return; + + try + { + splash.Invoke(new MethodInvoker +(splash.Close)); + } + catch (Exception) + { + } + myThread = null; + splash = null; + } + + } + + public class SplashForm : Form + { + public SplashForm() + { + this.Show(); + Application.DoEvents(); + this.BackColor = System.Drawing.Color.White; + Label lb = new Label(); + lb.Text = "This is the splash"; + this.Controls.Add(lb); + } + } + + public class MainForm : Form + { + public MainForm() + { + this.Show(); + Application.DoEvents(); + // Just for test, normally here is code that take +some time + Thread.Sleep(2000); + Label lb = new Label(); + lb.Text = "This is the main form"; + this.Controls.Add(lb); + } + } +} + +2. +3. + +Actual Results: +The splash shows but then everything hangs + +Expected Results: +Splash displayed for 2 seconds, then disappear and only the main form +visible. + +How often does this happen? +Always + +Additional Information: +Tested in Ubuntu 6.06 and Mono from SVN as of today + +Case 2: +Remove Application.DoEvents() and it somewhat works, but not really, +hangs in another way.. _______________________________________________ mono-bugs maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-bugs
