vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: ContextSwitchDeadlock-Exception 
Autor: Maas
Datum: 28.05.09 21:32

Hi Micke,
Danke, dass du dich dem annimmst. Ich denke das Problem ist eigentlich eher trivial und resultiert wohl aus meinem falschen Verständnis. Es stimmt wohl, dass man ein Objekt instanziiert, weil man es auch benutzen will. Ich gehe in der Regel schon davon aus, dass der Admin(Ich) der das Programm startet, es auch benutzen will. Ich will aber nicht, dass der Service sofort startet. Der Grund wieso ich überhaupt den Service zu beginn instanziiert habe, war die "State"-Funktion. Sie gibt nur den State des Service in der Console wieder. Wenn mService aber noch Nothing ist, löst das eine Exception aus.
Ich habe das jetzt mit einer Prüfung auf Nothing gelöst, aber gefallen tut mir das nicht. Ich programmiere zwar nur aus Hobby, aber trotzdem habe ich den Anspruch an meine Programme, dass diese in jeder Situation funktionieren und wenn möglich mit so wenig Try...Catch und Abfragen auf Nothing wie möglich.

Hier mal der Code:
<ServiceContract()> _
Public Interface IUpdater
    <OperationContract()> _
    Function NeedUpdate(ByVal version As Version) As Boolean
End Interface
 
Public Class Updater
    Implements IUpdater
 
    Public Function NeedUpdate(ByVal version As System.Version) As Boolean _
      Implements IUpdater.NeedUpdate
        If version.Major > 5 Then
            Return False
        Else
            Return True
        End If
    End Function
End Class
 
 
Module Module1
    Private WithEvents mService As ServiceHost
 
    Sub Main()
        Do
            Console.WriteLine("")
            Console.Write("> ")
            Dim s As String = Console.ReadLine
            Select Case s.ToUpper
                Case "EXIT"
                    Exit Do
                Case "OPEN"
                    mService = New ServiceHost(GetType(Updater))
                    mService.Open()
                Case "CLOSE"
                    mService.Close()
                Case "STATE"
                    If mService IsNot Nothing Then
                        Console.WriteLine("State: " & mService.State.ToString)
                    Else
                        Console.WriteLine("State: Not Created")
                    End If
                Case "CLEAR"
                    Console.Clear()
            End Select
        Loop
    End Sub
 
End Module
und die app.config:
  <system.serviceModel>
    <services>
      <service name="UpdateHost.Updater">
        <endpoint address="" binding="wsHttpBinding" _
          contract="UpdateHost.IUpdater" />
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:4720/Updater" />
          </baseAddresses>
        </host>
      </service>
    </services>
  </system.serviceModel>
Falls das jemand noch weiß: Was ist der Unterschied zwischen "http://+:1234/XYZ" und "http://localhost:1234/XYZ"?
Als ich noch Probleme mit der Namespace-Registrierung hatte, zeigte er mir in den Exceptions immer das + an, obwohl ich localhost eingestellt hatte.

Maas
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
ContextSwitchDeadlock-Exception2.183Maas28.05.09 15:11
Re: ContextSwitchDeadlock-Exception1.493Micke28.05.09 20:29
Re: ContextSwitchDeadlock-Exception1.556Maas28.05.09 21:32
Re: ContextSwitchDeadlock-Exception1.790Micke29.05.09 00:05
Re: ContextSwitchDeadlock-Exception1.410Maas29.05.09 13:57
Re: ContextSwitchDeadlock-Exception1.413Micke29.05.09 15:19

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel