Einzelnen Beitrag anzeigen

Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Ungültiger threadübergreifender Vorgang

  Alt 1. Apr 2006, 10:06
In deinem Code war wohl einfach das Problem, dass er beim Invoke die Methode dem gleichnamigen Event vorgezogen hat.
Zitat:
Wie würde dein eine Lösing mit meinem Code aussehen?
Hier ist ein kleiner Bleistift.
Lege einfach eine neue WindowsApp an und darin eine neue Component.
Schmeiße das hier in die Component und ziehe sie danach auf dein MainForm:
Code:
Control synchronizeTarget;

public Control SynchronizeTarget
{
  get { return synchronizeTarget; }
  set { synchronizeTarget = value; }
}

public event EventHandler Event;

protected virtual void OnEvent()
{
  if (Event != null)
    if (synchronizeTarget != null)
      synchronizeTarget.Invoke(Event, this, EventArgs.Empty);
    else
      Event(this, EventArgs.Empty);
}

public void Run(int iterations)
{
  ThreadStart call = delegate
  {
    for (int i = 0; i < iterations; i++)
    {
      Thread.Sleep(1000);
      OnEvent();
    }
  };

  Thread thread = new Thread(call);
  thread.Start();
}
Als SynchronizeTarget kannst du das Form selbst wählen. Noch eine Listbox und einen Button druff und das hier als Events verdrahten:
Code:
private void asyncSample1_Event(object sender, EventArgs e)
{
  listBox1.Items.Add("...");
}

private void button1_Click(object sender, EventArgs e)
{
  listBox1.Items.Clear();
  asyncSample1.Run(10);
}
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat