Statusform vha af singleton - virker med Windows.Timer med ikke med System.Timers
opfølgning på
http://www.eksperten.dk/ (...)Jeg vil gerne skrive programstatus til en form.
Forestillet mig en en form som oprettes af en singleton klasse og som hvorigennem en liste i formen opdateres med programstatus.
Denne virke imidlertid ikke under System.Timers som jeg bruger i mit program, kun under Windows.timers.
Jeg går ud fra at System.Timers er en baggrundstråd.
Men hvordan får jeg formen til at statusformem til at opdatere
Det gør den nemlig ikke med System.Timers.
projektet er lagt på
http://www.mediafire.com/ (...)using System;
namespace WindowsFormsApplication2
{
public sealed class SingletonLogger
{
static SingletonLogger instance = null;
static readonly object padlock = new object();
StatusForm f;
SingletonLogger()
{
f = new StatusForm();
f.Show();
}
public static SingletonLogger Instance
{
get
{
lock (padlock)
{
if (instance == null)
{
instance = new SingletonLogger();
}
return instance;
}
}
}
public void logDataToForm(string str)
{
try
{
lock (this)
{
f.AddToListBox1(str);
}
}
catch { }
}
}
}
-------------------
formen
-------------------
using System;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication2
{
public partial class StatusForm : Form
{
public delegate void AddListBoxText(string message);
public StatusForm()
{
InitializeComponent();
}
public ListBox ListBox
{
get { return listBox1; }
}
public void AddToListBox1(string txt)
{
if (listBox1.InvokeRequired)
{
listBox1.Invoke(new AddListBoxText(AddToListBox1), txt);
}
else
{
listBox1.Items.Add( (object)txt);
int l = listBox1.Items.Count;
if (l > 120)
for (int i = 0; i < 60; i++)
listBox1.Items.RemoveAt(0);
}
}
}
}