Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding
You last visited: Today at 18:56

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Vb.Net String für multithreading?

Discussion on Vb.Net String für multithreading? within the General Coding forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 4
Join Date: Mar 2010
Posts: 3,148
Received Thanks: 1,535
Vb.Net String für multithreading?

Hey, ich habe einen socket server mit multithreading und setze nach Class ein paar sachen wie z.b.
Dim paketcommand2 as string = vbnullstring

ich greife mit einem multithreading thread darauf zu und dann kommt immer
Code:
Das ActiveX-Steuerelement 248dd896-bb45-11cf-9abc-0080c7e7b78d kann nicht instanziiert werden, da der aktuelle Thread kein Singlethread-Apartment ist.
wie kann ich das ändern ohne es in jede Sub reinzuschreiben? da ich dort auch sachen gesetzt habe die von mehreren subs zugegriffen werden
Jopsi332 is offline  
Old 11/22/2011, 15:46   #2
 
elite*gold: 3
Join Date: Dec 2009
Posts: 969
Received Thanks: 314
wenn meine antwort falsch ist bitte nicht böse sein ^^
Weiss nicht ganz was du möchtest, aber:

Evt. deklarierst du die variable einfach schon von anfang an global?
.exTremez™ is offline  
Old 11/22/2011, 15:53   #3
 
elite*gold: 4
Join Date: Mar 2010
Posts: 3,148
Received Thanks: 1,535
Public Class main
Public paketcommand2 as string = vbnullstring
und dann die subs
ich will es auch so lassen theoretisch da ich nicht in jede sub das ändern will da es veradmmt viele sind
Jopsi332 is offline  
Old 11/22/2011, 16:20   #4
 
Kraizy​'s Avatar
 
elite*gold: 0
The Black Market: 471/0/0
Join Date: Apr 2010
Posts: 9,696
Received Thanks: 1,810
Wie greifst du denn auf die Klasse und Variable zu? Kannst du mal ein bisschen mehr davon rauskopieren oder ein kleines Beispiel posten?
Kraizy​ is offline  
Old 11/22/2011, 16:25   #5
 
elite*gold: 4
Join Date: Mar 2010
Posts: 3,148
Received Thanks: 1,535
Code:
    Private Sub Connectionlisten()
        While True
            client = server.AcceptTcpClient

            Dim c As New Connection 
            c.stream = client.GetStream
            c.streamr = New StreamReader(c.stream)
            c.streamw = New StreamWriter(c.stream)
            Dim data As Object = ""
            Data = c.streamr.ReadLine
            data = StringToHex(data)
            Dim Paket As String = vbNullString
            Dim PaketBoolean As Boolean = True
            While (PaketBoolean)
                Paket = ClientPaketBearbeitung(data)
                data = Replace(data, Paket, "")
                If (Len(data) = 0) Then
                    PaketBoolean = False
                End If
                 '/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\'
            'Reading client info'
            Dim readnames As New Read("Client", Paket)
            Dim Charname2 As String = vbNullString
            Dim charname3 As String = vbNullString
            Dim accname As String = vbNullString
            Dim PaketCommand2 As String = vbNullString
            readnames.ReadByte()
            readnames.ReadInt()
            readnames.ReadInt()
            readnames.ReadInt()
            readnames.ReadInt() '28-34'
            PaketCommand2 = readnames.ReadInt()
            If (PaketCommand2 = "00FF0000") Then
                readnames.ReadInt()
                readnames.ReadInt()
                readnames.ReadInt()
                readnames.ReadInt()
                readnames.ReadInt()
                readnames.ReadInt()
                Charname2 = readnames.ReadString
                accname = readnames.ReadString
                charname3 = readnames.ReadString
                ClientListBoxAdd("Info", "IP: " & ClientToServerWorld.RemoteHostIP & " Account: " & HexToString(charname3) & " Char: " & HexToString(accname))



            End If
            'End Reading client info'
            '/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\'

                Console.WriteLine("Account: " & c.acc & "Character: " & c.nick)
            End While
            list.Add(c) 

          

            Dim t As New Threading.Thread(AddressOf ListenToConnection)
            t.Start(c)
        End While
    End Sub
Jopsi332 is offline  
Old 11/22/2011, 16:30   #6
 
Kraizy​'s Avatar
 
elite*gold: 0
The Black Market: 471/0/0
Join Date: Apr 2010
Posts: 9,696
Received Thanks: 1,810
Also die ganzen anderen Sachen kannste ruhig weglassen, so hat doch niemand Lust sich alles durchzulesen. Wo genau kommt denn der Fehler? Das ganz unten Dim t As New...?
Kraizy​ is offline  
Old 11/22/2011, 16:32   #7
 
elite*gold: 4
Join Date: Mar 2010
Posts: 3,148
Received Thanks: 1,535
Nein mit der sub greife ich nur auf paketcommand2 = vbnullstring drauf zu der fehler kommt hier
Public Class main
Dim paketcommand2 as string = vbnullstring <-
Jopsi332 is offline  
Old 11/22/2011, 20:10   #8
 
elite*gold: 0
Join Date: Feb 2009
Posts: 1,137
Received Thanks: 572
Ein string ist kein Active X Steuerelement, und daher hast du deinen fehler falsch lokalisiert

Tritt der fehler direkt beim start auf oder erst im laufe des programms?
wenn 2teres mit debuggen versucht?
benutzt du active x steuerelemente?
btw: Dim readnames As New Read("Client", Paket) kenne ich gar nicht
warfley is offline  
Old 11/22/2011, 20:12   #9
 
Kraizy​'s Avatar
 
elite*gold: 0
The Black Market: 471/0/0
Join Date: Apr 2010
Posts: 9,696
Received Thanks: 1,810
Quote:
Originally Posted by warfley View Post
btw: Dim readnames As New Read("Client", Paket) kenne ich gar nicht
Wahrscheinlich eigene Klasse?
Kraizy​ is offline  
Old 11/22/2011, 20:18   #10
 
elite*gold: 4
Join Date: Mar 2010
Posts: 3,148
Received Thanks: 1,535
es hat vor multithreading mit winsock funktioniert so habe nur auf socket mit multithreading umgestellt.

Quote:
Originally Posted by xKraizy View Post
Wahrscheinlich eigene Klasse?
*** habe mir dort sachen für paket analysing programmiert und angelegt
Jopsi332 is offline  
Old 11/22/2011, 21:29   #11
 
elite*gold: 0
Join Date: Feb 2009
Posts: 1,137
Received Thanks: 572
Quote:
*** habe mir dort sachen für paket analysing programmiert und angelegt
finde ich iritierend, denn read ist ein schlüsselwort in vielen sprachen, und auch soweit ich weiß in alten VB versionen, außerdem ist das auch nicht ganz norm konform.

Also nochmal zu deiner fehlermeldung:
Du hast eine Active X Komponente, die multithreading, zumindest so wie du es anwendest, nicht unterstützt. Daher tippe ich darauf, das es sich dabei um die Winsocks handelt.

Also verwende doch besser die .Net Socket klassen, anstatt den winsocks
warfley is offline  
Old 11/22/2011, 21:53   #12
 
elite*gold: 4
Join Date: Mar 2010
Posts: 3,148
Received Thanks: 1,535
ich benutzte ja die socket klasse da ich winsocks jetz aus meinem source rausschmeioßen will.

SO
hab jetz mal alles was die connection braucht in jede sub definiert und nun kommt das
Public Version As String = "1.2"
Code:
Das ActiveX-Steuerelement 248dd896-bb45-11cf-9abc-0080c7e7b78d kann nicht instanziiert werden, da der aktuelle Thread kein Singlethread-Apartment ist
obowhl die connection garnicht auf version zugreift
Jopsi332 is offline  
Old 11/23/2011, 16:40   #13
 
Kraizy​'s Avatar
 
elite*gold: 0
The Black Market: 471/0/0
Join Date: Apr 2010
Posts: 9,696
Received Thanks: 1,810
Kannst du mal das Projekt (oder ein Stück davon) hochladen?
Kraizy​ is offline  
Old 11/24/2011, 19:36   #14
 
elite*gold: 4
Join Date: Mar 2010
Posts: 3,148
Received Thanks: 1,535
ich has nun rausgefunden. es liegt daran das ich eine cmd und eine form zusammen benutze und den code in der form habe und diese nicht für multithreading geht.
Jopsi332 is offline  
Reply


Similar Threads Similar Threads
[C++] D3D Multithreading
08/24/2011 - C/C++ - 0 Replies
Sry kann closed werde. MfG
[VB08]String in String mit mehreren Funden
08/08/2011 - .NET Languages - 6 Replies
Hey, bin gerade auf ein Problem gestoßen, an dem ich mir seit 3 Stunden die Zähne ausbeiße. Ich will eine Funktion schreiben, die der _StringBetween Funktion von AutoIt gleich ist. _StringBetween gibt in einem Array alle Strings zwischen zwei SubStrings und dem ganzen String aus. Die Ausgabe bei _StringBetween("<h1>test1</h1>&l t;h1>test2</h1>", "<h1>", "</h1>") wäre also idealer Weiße ein Array (x = "test1", x = "test2")... da man in VB08 kein Array returnen kann, komme ich aber einfach...
Multithreading
03/17/2010 - AutoIt - 16 Replies
$handle = DllCallbackRegister("_Threadstart"," ;int","ptr") $handlr = DllCallbackRegister("_Threadstard"," ;int","ptr") $dll = DllStructCreate("Char;int") DllStructSetData($dll,1,"hi") DllStructSetData($dll,2,1234) $ret = DllCall("kernel32.dll","hwnd", "CreateThread","ptr",0,"d word",0,"long",DllCallbackGetPtr($h andle),"ptr",DllStructGetPtr($dll)," ;long",0,"int*",0)...
C++ Multithreading + Klassen
01/16/2010 - C/C++ - 8 Replies
Mein Problem ist es , dass ich eine Klasse habe (nehmen wir als Beispiel Auto) und eine Funktion (Beispiel : BremswegBerechnen) habe , die aber in einem extra Thread laufen soll . Also so in etwa : . . . int main() { CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)BM W.BremswegBerechnen, 0, 0, 0);



All times are GMT +2. The time now is 18:56.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.