Re: Visual studio C++ CLR - vyvolání grafické akce z callbacku

Jaroslav Buchta jaroslav.buchta na hascomp.cz
Pátek Březen 4 18:51:27 CET 2022


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.
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

Dne 04.03.2022 v 18:43 Pavel Hudeček napsal(a):
> Myslím, že to není ono.
>
> Jde o následující situaci:
>
> *void callbackFn(int dataCnt);**
> **
> **namespace pokus1 {**
> **    ...**
> **    public ref class MyForm : public System::Windows::Forms::Form**
> **    {**
> **        ...**
> **// tady je form a všechny controly**
> **        ...
>
> **// kliknutím na button se se odsud spouští ten proces na pozadí:**
> **            startTest( ... callbackFn); // funkce z externí knihovny**
> ****
> **// je tu funkce na aktualizaci pictureboxu:**
> **        public: void refreshImg(int dataIdx) {**
> **            ...**
> **        }**
> **    }**
> **}**
> **// tady, mimo namespace projektu je callbackFn,
> // jinak ji ta startTest nemůže použít**
> **void callbackFn(int dataCnt) {**
> **// tady by se měl zavolat refreshImg(dataCnt-1);
> **}*
>
> PH
>
>
> Dne 04.03.2022 v 16:52 Jiří Nesvačil napsal(a):
>> Zdravim,
>>
>> hledejte BeginInvoke
>>
>> Nesvacil
>>
>> Dne 04.03.2022 v 16:32 Pavel Hudeček napsal(a):
>>> Dobrý den všem,
>>>
>>> mějme program psaný ve VS jako CLR aplikaci v C++.
>>> 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.
>>>
>>> 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í.
>>>
>>> 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.
>>>
>>> Nějaké návrhy, jak to dělat přímočařeji?
>>>
>>> Díky,
>>> PH
>>> _______________________________________________
>>> HW-list mailing list  -  sponsored by www.HW.cz
>>> Hw-list na list.hw.cz
>>> http://list.hw.cz/mailman/listinfo/hw-list
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored bywww.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list

------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20220304/86166398/attachment.htm>


Další informace o konferenci Hw-list