<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Synchronize in Thread bremst eigentliche Applikation (Form1) aus]]></title><description><![CDATA[<p>Hallo,</p>
<p>in einem Thread muss ich, um auf Komponenten von Form1 zugreifen zu können, &quot;Synchronize&quot; aufrufen:</p>
<pre><code>void __fastcall TPing::Execute()
{
 while (!Terminated)  //wenn Thread nicht unterbrochen wurde:
 {
   try    //Ping an Rechner abschicken
   {
     Synchronize(Pingen);
   }
   __finally
   {
    Form1-&gt;NextPing();
    Terminate();
   }
 }
    Application-&gt;ProcessMessages();
}
</code></pre>
<p>Die Funktion, die Synchronize aufruft, sieht folgendermaßen aus:</p>
<pre><code>void __fastcall TPing::Pingen()
{
    int PingAntwortZeit = PingHost(Form1-&gt;aktuellerrechnername-&gt;Caption, NULL);
    //angepingter PC am Netz?
    if (PingAntwortZeit!=-1)    //wenn PC am Netz:
     Form1-&gt;aktuellerrechnerstatus-&gt;Caption=&quot;PC_im_Netz&quot;;
    else
     Form1-&gt;aktuellerrechnerstatus-&gt;Caption=&quot;PC_nicht_im_Netz&quot;;  //wenn nicht im Netz:
}
</code></pre>
<p>Dadurch wird aber das bei der Ausführung des Programms angezeigte Formular Form1 so zögerlich angezeigt, dass z.B. kaum noch ein Button im Formular gedrückt werden kann.<br />
Wie kann ich diesen Fehler beheben?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/102939/synchronize-in-thread-bremst-eigentliche-applikation-form1-aus</link><generator>RSS for Node</generator><lastBuildDate>Tue, 14 Jul 2026 22:27:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/102939.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 03 Mar 2005 12:26:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Synchronize in Thread bremst eigentliche Applikation (Form1) aus on Thu, 03 Mar 2005 12:26:42 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>in einem Thread muss ich, um auf Komponenten von Form1 zugreifen zu können, &quot;Synchronize&quot; aufrufen:</p>
<pre><code>void __fastcall TPing::Execute()
{
 while (!Terminated)  //wenn Thread nicht unterbrochen wurde:
 {
   try    //Ping an Rechner abschicken
   {
     Synchronize(Pingen);
   }
   __finally
   {
    Form1-&gt;NextPing();
    Terminate();
   }
 }
    Application-&gt;ProcessMessages();
}
</code></pre>
<p>Die Funktion, die Synchronize aufruft, sieht folgendermaßen aus:</p>
<pre><code>void __fastcall TPing::Pingen()
{
    int PingAntwortZeit = PingHost(Form1-&gt;aktuellerrechnername-&gt;Caption, NULL);
    //angepingter PC am Netz?
    if (PingAntwortZeit!=-1)    //wenn PC am Netz:
     Form1-&gt;aktuellerrechnerstatus-&gt;Caption=&quot;PC_im_Netz&quot;;
    else
     Form1-&gt;aktuellerrechnerstatus-&gt;Caption=&quot;PC_nicht_im_Netz&quot;;  //wenn nicht im Netz:
}
</code></pre>
<p>Dadurch wird aber das bei der Ausführung des Programms angezeigte Formular Form1 so zögerlich angezeigt, dass z.B. kaum noch ein Button im Formular gedrückt werden kann.<br />
Wie kann ich diesen Fehler beheben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/736581</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/736581</guid><dc:creator><![CDATA[williman]]></dc:creator><pubDate>Thu, 03 Mar 2005 12:26:42 GMT</pubDate></item><item><title><![CDATA[Reply to Synchronize in Thread bremst eigentliche Applikation (Form1) aus on Thu, 03 Mar 2005 12:42:44 GMT]]></title><description><![CDATA[<p>Überleg Dir malgenau was Du da machst.Dann kommst Du selber drauf warum das so ist und wie Du das anders machen mußt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/736600</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/736600</guid><dc:creator><![CDATA[MichelRT]]></dc:creator><pubDate>Thu, 03 Mar 2005 12:42:44 GMT</pubDate></item><item><title><![CDATA[Reply to Synchronize in Thread bremst eigentliche Applikation (Form1) aus on Thu, 03 Mar 2005 12:48:38 GMT]]></title><description><![CDATA[<p>Soweit ich weis hällt Synchronize das Hauptprogramm an um sicheren Zugriff auf die Komponenten zu ermöglichen.<br />
Und wenn man dann immer wieder ohne Pause eine Methode mit Synchronize aufruft wird natürlich das Hauptprogramm blockiert.</p>
<p>Ich sehe 2 Möglichkeiten:</p>
<p>- Den Thread immer für paar sekunden anhalten zwischen den Synchronize aufrufen.</p>
<p>- Dem Hauptprogramm Zeit geben Befehle zu verarbeiten</p>
<p>Hoffe das hilft dir.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/736607</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/736607</guid><dc:creator><![CDATA[Beliah]]></dc:creator><pubDate>Thu, 03 Mar 2005 12:48:38 GMT</pubDate></item><item><title><![CDATA[Reply to Synchronize in Thread bremst eigentliche Applikation (Form1) aus on Thu, 03 Mar 2005 13:12:02 GMT]]></title><description><![CDATA[<p>Auf die hilfreichen Kommentare von MichelRT können wir hier alle verzichten! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /></p>
<p>Das mit dem Timer hilft nicht besonders viel, da immer noch während der Abarbeitung von Synchronize die Anwendung kurz gestoppt wird.<br />
Gibt es denn keine Alternative zu Synchronize?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/736630</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/736630</guid><dc:creator><![CDATA[williman]]></dc:creator><pubDate>Thu, 03 Mar 2005 13:12:02 GMT</pubDate></item><item><title><![CDATA[Reply to Synchronize in Thread bremst eigentliche Applikation (Form1) aus on Thu, 03 Mar 2005 13:10:50 GMT]]></title><description><![CDATA[<p>Wieso? er hat recht. Überlegt euch mal was euer Tun für Folgen für die restlichen Elemente hat. Dieser Aspekt geht nur allzuoft verloren.</p>
<p>Was Beliah da geschrieben hatte, hättest du beim Befolgen von MichelRTs Hinweis auch alles selber rausgefunden...</p>
<p>Oft genug finden sich hier Probleme die schlussendlich auf das Problem &quot;Sie wissen nicht was sie tun&quot; zurückzuführen ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/736638</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/736638</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Thu, 03 Mar 2005 13:10:50 GMT</pubDate></item><item><title><![CDATA[Reply to Synchronize in Thread bremst eigentliche Applikation (Form1) aus on Thu, 03 Mar 2005 13:56:37 GMT]]></title><description><![CDATA[<p>Hilft mir jetzt aber leider auch nicht weiter, und da ich nunmal nicht jeden Tag mit C++-Programmierung verbringe, frage ich eben nun einmal die Experten.<br />
Zudem:<br />
Es gibt grundsätzlich keine blöden Fragen ..., sondern nur solche Antworten!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/736699</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/736699</guid><dc:creator><![CDATA[williman]]></dc:creator><pubDate>Thu, 03 Mar 2005 13:56:37 GMT</pubDate></item><item><title><![CDATA[Reply to Synchronize in Thread bremst eigentliche Applikation (Form1) aus on Thu, 03 Mar 2005 14:01:14 GMT]]></title><description><![CDATA[<p>Reichlich unverfrorene Tonart für jemanden der um Hilfe bittet...</p>
<p>Du rufst in einer Schleife immer und immer wieder Synchronize(Pingen) auf, solange, bis der Thread, von außen, termininiert wird. Ist das tatsächlich das, was Du erreichen wolltest?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/736708</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/736708</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 03 Mar 2005 14:01:14 GMT</pubDate></item><item><title><![CDATA[Reply to Synchronize in Thread bremst eigentliche Applikation (Form1) aus on Thu, 03 Mar 2005 14:01:57 GMT]]></title><description><![CDATA[<p>teacherwilli schrieb:</p>
<blockquote>
<p>[...]<br />
Das mit dem Timer hilft nicht besonders viel, da immer noch während der Abarbeitung von Synchronize die Anwendung kurz gestoppt wird.<br />
[...]</p>
</blockquote>
<p>Das ist der Sinn von Synchronize, wenn die Anwendung normal weiterlaufen würde, könnte es zu Fehlern(Zugriffsfehlern?) kommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/736710</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/736710</guid><dc:creator><![CDATA[Beliah]]></dc:creator><pubDate>Thu, 03 Mar 2005 14:01:57 GMT</pubDate></item><item><title><![CDATA[Reply to Synchronize in Thread bremst eigentliche Applikation (Form1) aus on Wed, 09 Mar 2005 17:44:29 GMT]]></title><description><![CDATA[<p>Die Lösung Deines Problems hat nichts aber auch gar nichts mit C++ zu tun, auch nicht mit dem BCB.<br />
Was macht ein gestarteter Thread? Genau der läuft im Kreis rum bis ihn jemand stoppt und zwar so schnell wie durch Priorität und Betriebsystem eingestellt.<br />
Was machst Du in dem Thread? Du aktualisierst irgendwelche VCL-Controls und zwar bei jedem Durchlauf. Auf dem Bildschirm was ausgeben kostet viel Zeit. Du machst das sehr oft. Was ist die Folge? Dein System geht ihn die Knie.</p>
<p>Was ist folglich die Lösung? Ruf Dein Synchronise weniger oft auf. Wie macht man das? Zähle einfach Dein Threaddurchläufe mit und mach Synchronize z.B. nur bei jedem 20. Durchlauf.</p>
<p>Mit ein bißchen Überlegen wärst Du da selber drauf gekommen.Siehe mein Posting weiter oben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/741505</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/741505</guid><dc:creator><![CDATA[MichelRT]]></dc:creator><pubDate>Wed, 09 Mar 2005 17:44:29 GMT</pubDate></item></channel></rss>