[Mono-winforms-list] invalidate

Peter Dennis Bartok peter at novonyx.com
Tue May 30 19:18:41 EDT 2006

I haven't tried the code, but I wanted to point out that invaliding inside a 
paint handler is almost never a good idea (even when it is asynchronoys). 
And sleeping in a paint handler is even worse. You're blocking the event 
queue and preventing your drawing from being completed. If your form were 
double-buffered, for example, the sleep in the thread would block the buffer 
from being copied to the screen, even on Windows. You're also keeping any 
device contexts associated with the paint locked for that amount of time.

 If you want a regular update on screen, create a System.Windows.Forms.Timer 
and do the invalidate whenever the timer fires.


-----Original Message-----
From: "Santi Serrano" <santi.serrano at bigfoot.com>
To: "Mono WinForms" <mono-winforms-list at lists.ximian.com>
Date: Tuesday, 30 May, 2006 17:10
Subject: [Mono-winforms-list] invalidate

>The following code draws a line with Mono on Windows but doesn't do
>anything on Linux. I'm using Monoppix with Mono 1.1.8. Can anyone tell
>me if this issue is solved with recent releases?
>Thank you.
>using System;
>using System.Drawing;
>using System.Windows.Forms;
>using System.Threading;
>namespace WindowsApplication1
> public class Form1 : System.Windows.Forms.Form
> {
> private int i;
> [STAThread]
> static void Main()
> {
> Application.Run(new Form1());
> }
> protected override void OnPaint(PaintEventArgs pea)
> {
> pea.Graphics.DrawLine(new System.Drawing.Pen(Color.Blue), 1, 1, i, i);
> Thread.Sleep(200);
> i++;
> Invalidate();
> }
> }
>Mono-winforms-list maillist  -  Mono-winforms-list at lists.ximian.com

More information about the Mono-winforms-list mailing list