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