basic NET.

Miroslav Draxal evik na volny.cz
Čtvrtek Březen 15 17:09:48 CET 2012


Tak pro všechny, kteří v to plavou, vlákno sem, vlákno tam. Jak na to .

Do deklarací zadat slovy z C prototyp, ve visual basicu delegáta

    Delegate Sub InvokeDelegate(index As Short, ToolTipText As String)

Pak vytvořit SUB proceduru, kde uděláme co je potřeba ve správném vlákně

    Public Sub ToolTipVlakno(index As Short, ToolTipText As String)
        ToolTipProcesor.SetToolTip(_cmdEfekt(index), ToolTipText)
    End Sub

No a v proceduře, kde chci něco měnit, ale nejde to, protože jsem ve špatném vlákně vytvořit toto

Dim ToolTipText As String
Dim Index as Shot

    ToolTipText = "Kliknutím vypneš {" & Efekty(Index).JmenoEfektu & "}"
    If _cmdEfekt(Index).InvokeRequired Then ' POZOR - skok do správného vlákna
       _cmdEfekt(Index).BeginInvoke(New InvokeDelegate(AddressOf ToolTipVlakno), Index,ToolTipText)
    Else
        ToolTipProcesor.SetToolTip(_cmdEfekt(Index), ToolTipText) ' běží ve správném vláknu
    End If

No docela porod, ale jak to tak vypadá, tak to chápu. Míra 

-----Original Message-----
From: hw-list-bounces na list.hw.cz [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Marek Sembol
Sent: Thursday, March 15, 2012 2:29 PM
To: HW-news
Subject: Re: basic NET.

Omlouvam se, nechce se mi studovat podrobnosti tveho volani, ale stejne predpokladam,ze nasledujici ti bude stacit:)
pomoci:  ToolTipProcesor.BeginInvoke(New InvokeDelegate(AddressOf InvokeMethod)) dostanes to volani do "spravneho" threadu.
No a tady uz budes v tom spravnem:
Public Sub InvokeMethod()
'jsi ve spravnem threadu:)
End Sub 'InvokeMethod

Marek

On Thu, Mar 15, 2012 at 2:10 PM, Miroslav Draxal <evik na volny.cz> wrote:
> Dobrý den,
>
> Převádím tady jednu aplikaci vytvořenou ve visual basicu 6 na NET. 
> Nejprve jsem to musel převést na visual net2008, potom do net2010. 
> Hodně toho předělat, ale jaksi si nevím rady s mimovláknovým  voláním 
> komponent. Mějme pole, do kterého se  ložily commandbuttony. A k nim 
> chci tooltipy. Pokud něco příjde ze sériového portu COM, potom mi to 
> hlásí chybu, ze
>
>
>
>   Message=Operace mezi podprocesy není platná: Přístup k ovládacímu 
> prvku
> cmdEfekt_7 proběhl z jiného podprocesu než z podprocesu, v rámci 
> kterého byl vytvořen.
>
>
>
> Je mi jasné, že je to volání z jiného vlákna, ale nějak to neumím dát 
> dohromady.
>
>
>
> definice
>
>     Public _cmdEfekt(23) As Button
>
>     Public ToolTipProcesor As New ToolTip
>
>
>
> Naplnění pole
>
> _cmdEfekt = grpVyberEfektu.Controls.OfType(Of
> Button).OrderBy(Function(label) label.TabIndex).ToArray
>
>
>
> Zde chyba v sekciè cmdEfekt(Index)
>
> ToolTipProcesor.SetToolTip(_cmdEfekt(Index), “pokus“)
>
>
>
> Vím že to je přes invoke, ale namůžu to dát dohromady. Poradíte? Míra
>
>
>
>
>
> __________ Informace od ESET NOD32 Antivirus, verze databaze 6969 
> (20120315) __________
>
> Tuto zpravu proveril ESET NOD32 Antivirus.
>
> http://www.eset.cz
>
> _______________________________________________
> 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
 

__________ Informace od ESET NOD32 Antivirus, verze databaze 6969 (20120315) __________

Tuto zpravu proveril ESET NOD32 Antivirus.

http://www.eset.cz
 
 

__________ Informace od ESET NOD32 Antivirus, verze databaze 6969 (20120315) __________

Tuto zpravu proveril ESET NOD32 Antivirus.

http://www.eset.cz
 



Další informace o konferenci Hw-list