<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>GDI je jednovlaknove. Vy musite predat zpravu GDI prvku, aby se
      prekreslilo, nemuzete z jineho vlakna/callbacku primo kreslit,
      menit GUI prvky. Proto pouzijte BeginInvoke,</p>
    <p><a class="moz-txt-link-freetext" href="https://stackoverflow.com/questions/37885788/update-gui-using-c-clr-windows-forms">https://stackoverflow.com/questions/37885788/update-gui-using-c-clr-windows-forms</a></p>
    <p>Pokud to budete volat casto tj. vicekrat nez se stihne vykreslit,
      tak to je taky spatne. <br>
    </p>
    <p>Druhou moznost, kterou mate je dat timer a vyvolat prekresleni
      nekolikrat za sekundu.<br>
    </p>
    <p>Jirka<br>
    </p>
    <p><br>
    </p>
    <div class="moz-cite-prefix">Dne 04.03.2022 v 18:51 Jaroslav Buchta
      napsal(a):<br>
    </div>
    <blockquote type="cite"
      cite="mid:7e3b9966-3322-ed85-ef47-86239506b11d@hascomp.cz">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <div class="moz-cite-prefix">Podobne veci jsem resil primitivne
        poslanim zpravy oknu - nestaci to? To by melo jit univerzalne
        mezi vlakny pres post nebo snad i mezi procesy. Rezie asi velka
        uznavam.</div>
      <div class="moz-cite-prefix">Asi existuji primo v systemu nejake
        mechanismy, jak provadet notifikace ale nikdy jsem to
        nepotreboval. Videl jsem  ale uz i reseni, kdy vlakna
        komuikovala pres network i v ramci jedne aplikace :-D<br>
      </div>
      <div class="moz-cite-prefix"><br>
      </div>
      <div class="moz-cite-prefix">Dne 04.03.2022 v 18:43 Pavel Hudeček
        napsal(a):<br>
      </div>
      <blockquote type="cite"
        cite="mid:2cf259d9-c662-0313-d2ce-881aa01844d8@seznam.cz">
        <meta http-equiv="Content-Type" content="text/html;
          charset=UTF-8">
        Myslím, že to není ono.<br>
        <br>
        Jde o následující situaci:<br>
        <br>
        <font face="monospace"><b>void callbackFn(int dataCnt);</b><b><br>
          </b><b><br>
          </b><b>namespace pokus1 {</b><b><br>
          </b><b>    ...</b><b><br>
          </b><b>    public ref class MyForm : public
            System::Windows::Forms::Form</b><b><br>
          </b><b>    {</b><b><br>
          </b><b>        ...</b><b><br>
          </b><b>        <font color="#008000">// tady je form a
              všechny controly</font></b><b><br>
          </b><b>        ...<br>
            <br>
          </b><b>            <font color="#008000">// kliknutím na
              button se se odsud spouští ten proces na pozadí:</font></b><b><br>
          </b><b>            startTest( ... callbackFn); <font
              color="#008000">// funkce z externí knihovny</font></b><b><br>
          </b><b>        </b><b><br>
          </b><b>        <font color="#008000">// je tu funkce na
              aktualizaci pictureboxu:</font></b><b><br>
          </b><b>        public: void refreshImg(int dataIdx) {</b><b><br>
          </b><b>            ...</b><b><br>
          </b><b>        }</b><b><br>
          </b><b>    }</b><b><br>
          </b><b>}</b><b><br>
          </b><font color="#008000"><b>// tady, <font color="#ff0000">mimo
                namespace projektu</font> je callbackFn,<br>
              // jinak ji ta startTest nemůže použít</b></font><b><br>
          </b><b>void callbackFn(int dataCnt) {</b><b><br>
          </b><b>    <font color="#008000">// tady by se měl zavolat
              refreshImg(dataCnt-1);<br>
            </font></b><b>}</b></font><br>
        <br>
        PH<br>
        <br>
        <br>
        <div class="moz-cite-prefix">Dne 04.03.2022 v 16:52 Jiří
          Nesvačil napsal(a):<br>
        </div>
        <blockquote type="cite"
          cite="mid:c6655a7b-dea9-756c-ab63-54d72625f6c6@posys.cz">Zdravim,
          <br>
          <br>
          hledejte BeginInvoke <br>
          <br>
          Nesvacil <br>
          <br>
          Dne 04.03.2022 v 16:32 Pavel Hudeček napsal(a): <br>
          <blockquote type="cite">Dobrý den všem, <br>
            <br>
            mějme program psaný ve VS jako CLR aplikaci v C++. <br>
            Program spustí funkci běžící na pozadí, která občas vyvolá
            callback a tím oznamuje, že jsou k dispozici nová data. Pak
            by se měl aktualizovat picturebox, případně objevit záznam v
            listboxu a vše pokračuje dál. <br>
            <br>
            Jenže nemůžu přijít na to, jak z tý callback funkce, která
            není součástí managed prostředí, vyvolat akci v managed
            prostředí. <br>
            <br>
            Teda funguje mi varianta, že callback nastaví nějakou
            globální proměnnou a na tu periodicky kouká timer, ale to je
            takový poněkud nepraktický, protože délka "občas" závisí na
            kvantových jevech a může dosahovat 100 kHz, nebo taky půl
            hodiny. <br>
            <br>
            Nějaké návrhy, jak to dělat přímočařeji? <br>
            <br>
            Díky, <br>
            PH <br>
            _______________________________________________ <br>
            HW-list mailing list  -  sponsored by <a
              class="moz-txt-link-abbreviated" href="http://www.HW.cz"
              moz-do-not-send="true">www.HW.cz</a> <br>
            <a class="moz-txt-link-abbreviated moz-txt-link-freetext"
              href="mailto:Hw-list@list.hw.cz" moz-do-not-send="true">Hw-list@list.hw.cz</a>
            <br>
            <a class="moz-txt-link-freetext"
              href="http://list.hw.cz/mailman/listinfo/hw-list"
              moz-do-not-send="true">http://list.hw.cz/mailman/listinfo/hw-list</a>
            <br>
          </blockquote>
          _______________________________________________ <br>
          HW-list mailing list  -  sponsored by <a
            class="moz-txt-link-abbreviated" href="http://www.HW.cz"
            moz-do-not-send="true">www.HW.cz</a> <br>
          <a class="moz-txt-link-abbreviated moz-txt-link-freetext"
            href="mailto:Hw-list@list.hw.cz" moz-do-not-send="true">Hw-list@list.hw.cz</a>
          <br>
          <a class="moz-txt-link-freetext"
            href="http://list.hw.cz/mailman/listinfo/hw-list"
            moz-do-not-send="true">http://list.hw.cz/mailman/listinfo/hw-list</a>
          <br>
        </blockquote>
        <br>
        <br>
        <fieldset class="moz-mime-attachment-header"></fieldset>
        <pre class="moz-quote-pre" wrap="">_______________________________________________
HW-list mailing list  -  sponsored by <a class="moz-txt-link-abbreviated" href="http://www.HW.cz" moz-do-not-send="true">www.HW.cz</a>
<a class="moz-txt-link-abbreviated moz-txt-link-freetext" href="mailto:Hw-list@list.hw.cz" moz-do-not-send="true">Hw-list@list.hw.cz</a>
<a class="moz-txt-link-freetext" href="http://list.hw.cz/mailman/listinfo/hw-list" moz-do-not-send="true">http://list.hw.cz/mailman/listinfo/hw-list</a>
</pre>
      </blockquote>
      <p><br>
      </p>
      <br>
      <fieldset class="moz-mime-attachment-header"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
HW-list mailing list  -  sponsored by <a class="moz-txt-link-abbreviated" href="http://www.HW.cz">www.HW.cz</a>
<a class="moz-txt-link-abbreviated" href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a>
<a class="moz-txt-link-freetext" href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a>
</pre>
    </blockquote>
  </body>
</html>