<?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[Prozessen unterschiedliche Prioritäten zuweisen]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe folgendes Problem:</p>
<p>Ich benutze eine Dialogfeldklasse und lasse optisch einen Countdown von 120 Sekunden anzeigen,<br />
der gegen Null läuft. Wenn der Countdown bei 100 ist, wird eine Funktion gestartet (Kontaktaufnahme<br />
zu externer Hardware...ist ja auch ganz egal). Sobald die Funktion startet, kommt mein Countdownzähler<br />
ins Stocken und überspringt die 109, so dass - wenn er nicht mehr zu sehr mit Rechnen beschäftigt ist,<br />
- er mit 108 fortsetzt.</p>
<p>Wie unterbinde ich solche Sachen, d.h. wie kann ich externe Verarbeitungen von der Dartstellung<br />
optischer Anzeigeelemente entkoppeln?</p>
<p>Ich habe schon versucht, einen anderen Timer mit der gleichen Laufzeit aufzurufen, der nichts mit der optischen Ausgabe zu tun hat...leider passiert aber genau das Gleiche.</p>
<p>Danke für eure Hilfe.</p>
<p>Grüße,<br />
Krommi</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/175889/prozessen-unterschiedliche-prioritäten-zuweisen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 19 Apr 2026 05:24:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/175889.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 15 Mar 2007 08:40:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Prozessen unterschiedliche Prioritäten zuweisen on Thu, 15 Mar 2007 08:40:22 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe folgendes Problem:</p>
<p>Ich benutze eine Dialogfeldklasse und lasse optisch einen Countdown von 120 Sekunden anzeigen,<br />
der gegen Null läuft. Wenn der Countdown bei 100 ist, wird eine Funktion gestartet (Kontaktaufnahme<br />
zu externer Hardware...ist ja auch ganz egal). Sobald die Funktion startet, kommt mein Countdownzähler<br />
ins Stocken und überspringt die 109, so dass - wenn er nicht mehr zu sehr mit Rechnen beschäftigt ist,<br />
- er mit 108 fortsetzt.</p>
<p>Wie unterbinde ich solche Sachen, d.h. wie kann ich externe Verarbeitungen von der Dartstellung<br />
optischer Anzeigeelemente entkoppeln?</p>
<p>Ich habe schon versucht, einen anderen Timer mit der gleichen Laufzeit aufzurufen, der nichts mit der optischen Ausgabe zu tun hat...leider passiert aber genau das Gleiche.</p>
<p>Danke für eure Hilfe.</p>
<p>Grüße,<br />
Krommi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1245883</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1245883</guid><dc:creator><![CDATA[Krommi]]></dc:creator><pubDate>Thu, 15 Mar 2007 08:40:22 GMT</pubDate></item><item><title><![CDATA[Reply to Prozessen unterschiedliche Prioritäten zuweisen on Thu, 15 Mar 2007 09:33:08 GMT]]></title><description><![CDATA[<p>du kannst die priorität deines prozesses/threads etwas raufsetzen, und dann bei jeder zähleränderung ein redraw des fenster(bereich)s erzwingen.<br />
stichpunkte:<br />
- SetThreadPriority()<br />
- SetPriorityClass()<br />
- InvalidateRect()<br />
- UpdateWindow()<br />
- GdiFlush()<br />
- GdiSetBatchLimit()</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1245915</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1245915</guid><dc:creator><![CDATA[vista]]></dc:creator><pubDate>Thu, 15 Mar 2007 09:33:08 GMT</pubDate></item><item><title><![CDATA[Reply to Prozessen unterschiedliche Prioritäten zuweisen on Thu, 12 Apr 2007 10:43:55 GMT]]></title><description><![CDATA[<p>hört sich gut an, komme damit aber nicht weiter.</p>
<p>Ich habe zwei Timer:</p>
<p>Timer 1 zählt mir einen Countdown am Bildschirm runter,<br />
Timer 2 ist dafür zuständig, dass bei einem Bestimmten Ereignis Daten aus einer Excel-Tabelle gelesen werden.</p>
<p>Der Lesevorgang Dauert ca. 2 Sekunden, so lange kommt mein Bildschirmcountdown jedenfalls ins Stocken. Ich habe das Gefühl, als würde er in dieser Zeit Timer 1 gar nicht ausführen. Deshalb bringt es nichts, wenn ich an igend einer Stelle &quot;UpdateWindow()&quot; benutze.</p>
<p>Kann ich denn die Priorität von Funktionen explizit heraufsetzen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1264486</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1264486</guid><dc:creator><![CDATA[Krommi]]></dc:creator><pubDate>Thu, 12 Apr 2007 10:43:55 GMT</pubDate></item><item><title><![CDATA[Reply to Prozessen unterschiedliche Prioritäten zuweisen on Thu, 12 Apr 2007 10:49:35 GMT]]></title><description><![CDATA[<p>Arbeitest du komplett in einem Thread (Sprich: Die OnTimer()-Methode kümmert sich selber um die Hintergrund-Arbeit)? Wenn ja, hast du ein Problem, daß während dieser Arbeit die komplette Message-Queue eingefroren wird. Die Lösung heißt &quot;Threads&quot; (die Arbeit wird von einer eigenen Methode ausgeführt; OnTimer() startet einen neuen Thread und gibt das Kommando zurück an die MessageQueue).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1264491</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1264491</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 12 Apr 2007 10:49:35 GMT</pubDate></item><item><title><![CDATA[Reply to Prozessen unterschiedliche Prioritäten zuweisen on Thu, 12 Apr 2007 11:10:42 GMT]]></title><description><![CDATA[<p>In der OnTimer-Methode rufe ich einfach verschiedene Funktionen auf:<br />
- Daten auslesen<br />
- In Abhängigkeit der Daten weitere Funktionen ausführen...</p>
<p>Du kannst damit recht haben. Das Bild wird für die Zeit, in der die Funktionen abgearbeitet werden eingefroren. Wie stelle ich das mit den Threads denn an?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1264516</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1264516</guid><dc:creator><![CDATA[Krommi]]></dc:creator><pubDate>Thu, 12 Apr 2007 11:10:42 GMT</pubDate></item><item><title><![CDATA[Reply to Prozessen unterschiedliche Prioritäten zuweisen on Thu, 12 Apr 2007 11:25:01 GMT]]></title><description><![CDATA[<p>Erstmal lagerst du die eigentliche Arbeit in eine statische Methode aus:</p>
<pre><code class="language-cpp">UINT worker(LPVOID obj)
{
  CMyDlg* pThis = (CMyDlg*) obj;
  ...
  // Zugriff auf deine Dialog kriegst du jetzt über pThis-&gt;...
  // Achtung: Keine fenster-relevanten Atrribute ändern, verwende stattdessen SendMessage()
}
</code></pre>
<p>Und dann kannst du die Timer-Funktion kürzen zu einem Aufruf:</p>
<pre><code class="language-cpp">AfxBeginThread(worker,this);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1264537</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1264537</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 12 Apr 2007 11:25:01 GMT</pubDate></item><item><title><![CDATA[Reply to Prozessen unterschiedliche Prioritäten zuweisen on Thu, 12 Apr 2007 11:40:08 GMT]]></title><description><![CDATA[<p>Mit &quot;fensterrelevante Attribute&quot; meinst du aber keine Anzeigeelemente, oder?<br />
Die werden von dem Timer nämlich auch benutzt.</p>
<p>Mal schauen, ob ich es richtig verstanden habe:</p>
<p>UINT worker(LPVOID obj) deklariere ich als statische Methode und lagere alles, was ich in meinem 2. Timer habe in diese Funktion aus. Danach rufe ich diese Methode oder diesen &quot;Thread&quot; mittels AfxBeginThread(worker,this) auf.</p>
<p>Verwendet man für solche Sachen grundsätzlich Threads? Habe bisher noch nie etwas damit gemacht.</p>
<p>Danke und Gruß,<br />
Krommi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1264553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1264553</guid><dc:creator><![CDATA[Krommi]]></dc:creator><pubDate>Thu, 12 Apr 2007 11:40:08 GMT</pubDate></item><item><title><![CDATA[Reply to Prozessen unterschiedliche Prioritäten zuweisen on Thu, 12 Apr 2007 11:46:12 GMT]]></title><description><![CDATA[<p>Krommi schrieb:</p>
<blockquote>
<p>Mit &quot;fensterrelevante Attribute&quot; meinst du aber keine Anzeigeelemente, oder?<br />
Die werden von dem Timer nämlich auch benutzt.</p>
</blockquote>
<p>Doch, genau die meinte ich - das Fenster gehört dem Anzeigethread und der nimmt es dir übel, wenn andere Threads versuchen, ihm in die Daten zu pfuschen. Aber du kannst dir eine eigene Nachricht (#define WM_WORKFINISHED WM_APP+x) definieren und dem Anzeigethread per SendMessage(WM_WORKFINISHED); mitteilen, daß du fertig bist mit deiner Arbeit - der zugehörige Message Handler zeigt dann die Ergebnisse an.</p>
<blockquote>
<p>UINT worker(LPVOID obj) deklariere ich als statische Methode und lagere alles, was ich in meinem 2. Timer habe in diese Funktion aus. Danach rufe ich diese Methode oder diesen &quot;Thread&quot; mittels AfxBeginThread(worker,this) auf.</p>
</blockquote>
<p>Ja.</p>
<blockquote>
<p>Verwendet man für solche Sachen grundsätzlich Threads? Habe bisher noch nie etwas damit gemacht.</p>
</blockquote>
<p>In der Regel ja - auf diese Weise bleibt dein Programm ansprechbar, während es im Hintergrund rechnet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1264557</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1264557</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 12 Apr 2007 11:46:12 GMT</pubDate></item><item><title><![CDATA[Reply to Prozessen unterschiedliche Prioritäten zuweisen on Mon, 16 Apr 2007 09:25:16 GMT]]></title><description><![CDATA[<p>Hmm...habe alles so gemacht, bekomme aber trotzdem folgenden Fehler. Hat irgend jemand eine Idee, weshalb?</p>
<pre><code class="language-cpp">// In CVorbereitungDialyse.h
UINT worker(LPVOID obj)
{
	CVorbereitungDialyseDlg* pThis = (CVorbereitungDialyseDlg*) obj;

	Reader1-&gt;ClearTable(&quot;Daten Dialysator.xls&quot;);
	Reader2-&gt;ClearTable(&quot;Daten AVSystem.xls&quot;);
	Reader3-&gt;ClearTable(&quot;Daten Konzentrat.xls&quot;);

	return 0;
}

// In CVorbereitungDialyseDlg.cpp
AfxBeginThread(worker, this);

// Fehlermeldung
Kompilieren...
VorbereitungDialyseDlg.cpp
c:\Visual C++ Projekte\Visual Studio Projects\AutoIdentification\VorbereitungDialyseDlg.cpp(325) : error C2665: 'AfxBeginThread': Durch keine der 2 Überladungen kann Parameter 1 vom Typ 'UINT (LPVOID)' konvertiert werden
        c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\afxwin.h(4105): kann 'CWinThread *AfxBeginThread(AFX_THREADPROC,LPVOID,int,UINT,DWORD,LPSECURITY_ATTRIBUTES)' sein
        c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\afxwin.h(4108): oder       'CWinThread *AfxBeginThread(CRuntimeClass *,int,UINT,DWORD,LPSECURITY_ATTRIBUTES)'
        bei Anpassung der Argumentliste '(overloaded-function, CVorbereitungDialyseDlg *const )'
</code></pre>
<p>Danke und Gruß,<br />
Krommi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1266987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1266987</guid><dc:creator><![CDATA[Krommi]]></dc:creator><pubDate>Mon, 16 Apr 2007 09:25:16 GMT</pubDate></item><item><title><![CDATA[Reply to Prozessen unterschiedliche Prioritäten zuweisen on Mon, 16 Apr 2007 09:53:21 GMT]]></title><description><![CDATA[<blockquote>
<p>bei Anpassung der Argumentliste '(overloaded-function, CVorbereitungDialyseDlg *const )'</p>
</blockquote>
<p>Hast du vielleicht noch eine weitere Funktion mit dem Namen 'worker()', die mit deiner Thread-Funktion in Konkurrenz stehen könnte? Und ist worker() wirklich eine <strong>statische</strong> Methode?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1267004</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1267004</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 16 Apr 2007 09:53:21 GMT</pubDate></item><item><title><![CDATA[Reply to Prozessen unterschiedliche Prioritäten zuweisen on Tue, 17 Apr 2007 06:07:57 GMT]]></title><description><![CDATA[<p>[quote=&quot;CStoll&quot;]</p>
<blockquote>
<p>Und ist worker() wirklich eine <strong>statische</strong> Methode?</p>
</blockquote>
<p>Genau deran lag es, hatte nochmal bei der Microsoft hilfe geschaut und dort war auch ein solches Beispiel aufgeführt, aber ohne eine statische Funktion...seltsam.</p>
<p>Naja, jedenfalls funzt es jetzt.<br />
Vielen Dank CStoll!</p>
<p>Vielleicht noch zwei Fragen für die Zukunft:<br />
Wie passen eigentlich Threads und OOP zusammen. Threads erinnern mich eigentlich ein wenig an prozedurale Programmierung (vielleicht liege ich auch falsch*g*).</p>
<p>Hab bisher schon mehrere Grundlagenbücher zu C++ durchgearbeitet aber zu Threads bisher nur wenig gefunden. Oder wird dies wirklich erst ineressant, wenn Benutzeroberflächen ins Spiel kommen?</p>
<p>Gruß,<br />
Krommi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1267467</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1267467</guid><dc:creator><![CDATA[Krommi]]></dc:creator><pubDate>Tue, 17 Apr 2007 06:07:57 GMT</pubDate></item><item><title><![CDATA[Reply to Prozessen unterschiedliche Prioritäten zuweisen on Tue, 17 Apr 2007 06:49:29 GMT]]></title><description><![CDATA[<p>@1: Also ich konnte mit Threads und Objekten eigentlich recht gut arbeiten (wobei ich nicht sicher bin, ob mein Stil wirklich &quot;reines OOP&quot; ist ;)). Und wenn du dich geschickt anstellst, kannst du auch recht gut objektorientiert threaden.</p>
<p>@2: Threads werden dann interessant, wenn du mehrere Sachen parallel erledigen willst - und einer der typischen Anwendungsbereiche sind hier Benutzeroberflächen, die während der Arbeit benutzbar bleiben sollen/wollen/...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1267494</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1267494</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 17 Apr 2007 06:49:29 GMT</pubDate></item></channel></rss>