Laden...
Avatar #avatar-3200.jpg
unconnected myCSharp.de - Member
Softwareentwickler Oerlinghausen/NRW Dabei seit 13.08.2006 849 Beiträge
Benutzerbeschreibung

Forenbeiträge von unconnected Ingesamt 849 Beiträge

11.04.2011 - 13:03 Uhr

? Wieso überhaup zu ObservableCollection<Irgendwas> casten (was ja auch nicht fluppt)? OC implementiert doch eh IEnumerable.

erstes Item holen, und dann per Reflction auf das Property drauf zugreifen.

07.04.2011 - 09:10 Uhr

hast du denn den Privaten schlüssel?

Ich hab mir im nen neues selbst signiertes Certifikat erstellt (pfx)
Das macht man Windows bekannt, und exportiert (DER codiert) -> cer

Damit hat es geklappt.. Bis auf einen NameMismatch (im RemoteCertificateValidationCallback true zurückgeben). Aber leider kenne ich mich da auch nicht so gut aus.

06.04.2011 - 16:28 Uhr

Hallo,

wenn du beim Server das AcceptSocket weglässt fluppts.

Du kommst an den Socket auch über das Property "Client" ran.

und die ausdrücke nennen sich lambda expressions

06.04.2011 - 13:40 Uhr

Der sslStream hat ein Property was dir sagt ob er Authentifiziert ist, oder nicht.
Ich denke aber das es nicht geklappt hat.

Da Du deinen Server Code jetzt aber bestimmt geändert hast, kann man nicht genau sagen wo es hängt..

06.04.2011 - 09:52 Uhr

Hallo,

du blockierst deine Gui mit dem Versuch dich per SSL zu Authentifizieren. Der Server kann aber noch kein SSL, hört aber per TCP Listner auf dem Port.


 try
            {
                //sslStream.AuthenticateAsClient(serverName);
                sslStream.BeginAuthenticateAsClient(serverName, data =>
                {
                    netRead = new Thread(NetworkReader);
                    netRead.Start();
                }, null);
            }
            catch (AuthenticationException ex)
            {
                Console.WriteLine("Exception: {0}", ex.Message);
                if (ex.InnerException != null)
                {
                    Console.WriteLine("Inner exception: {0}", ex.InnerException.Message);
                }
                Console.WriteLine("Authentication failed - closing the connection.");
                tcpClient.Close();
                return;
            }
        }


Damit blockiert deine Gui zumindest schonmal nicht weiter.

und: SslStream

Gruß

P.S. Wenn man nicht weiß wo das Programm stehen bleibt, gibt es im VS den Debug -> BreakAll button 😉

Edit2: Und das ist mal ganz böse:


if (connected)
            {
                WriteMessage("quit");
            }
            //Warten bis Antwort kommt
            do
            { } while (connected);

            if (netRead != null && netRead.IsAlive)
            {
                netRead.Interrupt();
                netRead.Abort();
            }

Wenn der Client nicht mehr antwortet verbleibt der server bei 100% von einer Core, und beendet sich nicht.

05.04.2011 - 09:49 Uhr

Ok, wenn man in einen String Serialisieren will geht das nicht ganz ohne reader/writer
aber man kann es vermindern.:



class Program
    {
        static void Main(string[] args)
        {
            var fupp = new Test {Fupp = "Test"};

            XmlSerializer ser = new XmlSerializer(typeof(Test));
            string text = null;

            //Serialize to string
            using(var writer = new StringWriter())
            {
                ser.Serialize(writer,fupp);
                text = writer.ToString();
            }

            //Serialize to File
            using (var writer = new StreamWriter(@"C:\TFS\Test.txt"))
            {
                ser.Serialize(writer, fupp);
            }


            //Deserialize from string
            Test deserialized = null;
            using(var reader = new StringReader(text))
            {
                deserialized = (Test) ser.Deserialize(reader);
            }

            //Deserialize from File
            using (StreamReader reader = new StreamReader(@"C:\TFS\Test.txt"))
            {
                deserialized = (Test)ser.Deserialize(reader);
            }
        }
    }

    [Serializable]
    public class Test
    {
        public string Fupp { get; set; }
    }

edit: ok.. hatte irgendwie in Erinnerung das XmlSerializer eine ctor überladung hatte die nen path annimmt..

04.04.2011 - 16:11 Uhr

Hmm, die Config files fand ich auch immer anstrengend..

Bau Dir doch einfach eine Object struktur wie Du sie brauchst, und hau sie mittels XmlSerializer in ein eigenes File...

04.04.2011 - 15:11 Uhr

Hallo, das was du da siehst ist die Byte Order Mark

Dein Code sieht auch etwas verwirrend aus.. besonders der teil wo du auf den BaseStream drauf zugreifst.. das ist meist keine gute Idee.

Normalerweise brauchst Du den TextWriter und XmlTextWriter überhaupt nicht. Benutz einfach nur den XmlSerializer.. (es sei denn Du hast anforderungen die das nicht erlauben) Default ist da IMHO schon UTF8.

Gruß

01.04.2011 - 08:27 Uhr

Hmm tut mir leid das so sagen zu müssen, aber das wird das Forum kaputt machen.

Ich denke nicht das es für die mods machbar ist, in akzeptabler Zeit immer wieder die Threads zu öffnen.

30.03.2011 - 16:51 Uhr

Schade zu spät, aber um das ganze nochmal zu präzisieren:

Der Konstruktor von MainWindow wird nie mehr verlassen, da du ihn mit Open() veranlasst auf eingehende Connections zu horchen. Und somit steht der GUI Thread, und die MessageBox kann nie angezeigt werden.

28.03.2011 - 10:40 Uhr

der 2. Aufruf wird so nicht klappen weil er es explicit implementiert hat. gewünscht?

public byte IMessage.ShowMessage(int ID, byte ButtonCount, byte Level  string[] Text)  
{  
   //wie aufrufen?  
}  

Das wird auch so nicht klappen, weil hier eine explicite impl. public gesetzt wurde.

24.03.2011 - 10:17 Uhr

In diesem Fall ist es wohl doch eher ein kann (Und es lag auch nicht am Englisch). Die Community Edition ist unter GPL. Es gibt aber auch "kommerzielle" lizenzen. Mehrfachlizensierung. Also könnte ich die GPL Version lizenzfrei auch kommerziell benutzen, solange ich mich an die GPL halte.

24.03.2011 - 06:07 Uhr

Solange mich mein schlechtes Englisch nicht ganz täuscht, steht da was von können, nicht von müssen. Aber ich glaube wir gehen langsam o.t.

23.03.2011 - 15:52 Uhr

?

Die Community Edition steht doch immer noch unter GPL? oder?

22.03.2011 - 16:29 Uhr

Hallo,

nein so etwas gibt es imho nicht, so etwas müsstest Du schon selbst implementieren und versorgen.

Was für ein Problem möchtest Du denn mit diesem Vorgehen lösen? Vielleicht können wir dir einen anderen Weg aufzeigen.

21.03.2011 - 15:34 Uhr

Hmm, warum macht man so etwas überhaupt?

16.03.2011 - 12:53 Uhr

Hallo,

Grundsätzlich wäre es natürlich schön, wenn man ein feedback bekommt... Bei deinem 1. Post hast Du auch offengelassen ob dir die Antwort geholfen hat, oder nicht.

Gruss

15.03.2011 - 16:18 Uhr

Hi,

in deinem String ist gar kein Array definiert.. nur ein Object names result. Also entweder dein empfangener String muss so aussehen:

"{ &quot;tokens&quot;: [ { &quot;number_of_favourites&quot;: 4, &quot;number_of_messages&quot;: 9, &quot;user_first_name&quot;: &quot;Lukas&quot; } ], &quot;id&quot;: &quot;pc&quot;, &quot;error&quot;: null}"

oder deine User Klasse so :


public class User
    {
        public string id { get; set; }

        public result result { get; set; }

        public User()
        {
            //result = new List<result>();
        }
    }

Hoffe das hilft Dir.

Grüße

11.03.2011 - 07:51 Uhr

Hallo 😃

guck Dir mal INotifyPropertyChanged an, das ist ein Interface das dieses Event bereit stellt. Der Aufruf bleibt zwar der selbe aber der ablauf wäre zumindest ein wenig standartisiert.

Vllt, wenn Du das öfter brauchst, kann man auch an T4 templates oder Postcharp denken.

15.02.2011 - 16:11 Uhr

Hallo Term!nX,

alles ist object 😉 Nur dein Parameter muss Object sein. das heißt aber nicht das Du der Start Methode nicht eine List<Irgendwas> oder sostwas übergeben darfst, um es nachher wieder zurück zu casten.

Ausserdem kannst du auch auf eine ganz andere Instanz einer anderen Klasse zeigen, der du vorher in ctor Daten übergeben kannst.

03.02.2011 - 08:13 Uhr

Hallo,

hast du Resharper drauf? Bei mir hat die ShadowCopy option ähnlich komische Sache fabriziert.

21.01.2011 - 14:57 Uhr

jedoch will ich kein Instance von der Klasse HandleEvents in Klasse Process erzeugen..

Natürlich muss man seine Events wieder abmelden..

21.01.2011 - 11:11 Uhr

Wenn Du keine Instanz erzeugen willst, solltest du deinen Event als static definieren.

21.01.2011 - 10:57 Uhr

Ich würde Sie wahrscheinlich so aufbauen:


class Connection
    {
public Guid Id {get;set;}
public string Name {get;set;}        
public Inp Input {get;set}
public Out Output{get;set;}
public List<Point>{get;set;}
    }

12.01.2011 - 13:09 Uhr

Ok, falsch verstanden.. geänderter code:


var x = (from c in list
                     group c by c.Name.Substring(0, c.Name.IndexOf("-"))
                         into grp
                         select new { grp.Key, Value = grp.Count() }).ToList();

12.01.2011 - 11:53 Uhr

Hmm ich verstehe mache Sachen nicht in deinem statement z.b. die äussere Linq abfrage und grp.Select(x => x.NAME).Count()

ich habe mal dein Szenario nachgestellt und bin so zum Ergebniss gekommen:



 var list = new List<Test>
                           {
                               new Test {Name = "Parts-Test", Value = 1},
                               new Test {Name = "Parts-Test", Value = 1},
                               new Test {Name = "Parts-Test1", Value = 1},
                               new Test {Name = "Parts-Test2", Value = 2},
                               new Test {Name = "Test-Test", Value = 1},
                               new Test {Name = "Test-Test1", Value = 1}
                           };

            var x = (from c in list
                     group c by c.Name.Substring(0, c.Name.IndexOf("-"))
                     into grp
                     select new {grp.Key, Value = grp.Sum(data => data.Value)}).ToList();


hoffe ich konnte helfen & Gruss

10.01.2011 - 07:21 Uhr

Hallo,

das hört sich für mich eher so an als wenn Du vllt unwissentlich schon 2 Threads oder mehr benutzt. Aber ohne den Code zu sehen...

Teilt also Windows den einen Thread des BGW also automatisch schon auf zwei CPUs auf?

nein. Programmier einfache eine endlosschleife in der Du nichts tust.. Du wirst sehn das auf einer Dualcore maschine genau 50% der CPU benutzt wird.

Gruß

21.12.2010 - 07:15 Uhr

Hallo,

probiers doch mal mit dem Reflector von Lutz Roeder.

14.12.2010 - 13:45 Uhr

Schau Dir mal PropertyInfo und (VS2010 & .net4) dynamic an.

Allerdings sollte das immer die letzte wahl sein. Erklär mal, was Du genau vor hast.

14.12.2010 - 13:18 Uhr

Hallo.

Silverlight oder Wpf? Kenne mich nur mit Silverlight ein wenig aus.

Versuch mal "/AssemblyName;component/Images/Test.png"

10.12.2010 - 15:03 Uhr

Hallo Taucher,

mit was greifst Du auf die Services zu? Silverlight oder .Net ? Bist Du in einer Domain oder willst du FormsAuthentication (User name, password) verwenden? Hast Du mehrere Services oder nur einen?

Ist ein wenig complex die Geschichte, und ich kann Dir wirklich nur empfehlen Dich durch die MSDN zu ackern bzw auch Google mal zu fragen. Wenn Du deine Fragen ein bischen gezielter stellst, werden Dir die leute auch Antworten.

Gruß

09.12.2010 - 14:00 Uhr

Hallo,

Wenn du beim 2. mal die Verbindung öffnest, wird die referenz auf die erste Verbindung zerstört. Und diese wird dann zwangsweise auch geschlossen, da sie Disposed wird.

Das kannst Du unterbinden indem Du erstmal das static raus nimmst.

Wenn Du in der selben Instanz von Form1 dein PortConnect aufrufst, wird das auch eher unkontrolliert ablaufen. Du prüfst nicht ob schon eine Connection da ist, und ob diese vllt. auch noch offen ist.

Ausserdem würde ich versuchen den Handshake auf none zu stellen wenn es nicht unbedingt erforderlich ist.

P.S. Guck Dir auch mal string.Format an dann fällt dieses unleserliche string + string weg.

Dein Vorschlag mit GetDataSended, InitSended um den Zwischenstatus abzufragen erscheint mir logisch aber ich habe gerade absolut keine Idee, wie ich das machen soll. Ich muss ja praktisch die weitere Abarbeitung solange blockieren, bis das erste Command mir einen Rückgabewert liefert.. grübel

Nein du blockierst nichts, sondern stößt es erst dann an wenn du eine Antwort erhalten hast.

pseudo code



void SendData()
{
Port.SendData()
}

void DataReceived
{
 if(state == SendData && antwort korrekt)
   SendData2();
}

void SendData2()
{
Port.SendData2()
}


09.12.2010 - 12:59 Uhr

Sorry musste gerade schnell zum essen deshalb konnte ich das gerade nicht näher ausführen 😄

Du rufst PortConnect 2x auf, zumindest entnehme ich das so aus deinem Ausgaben Log.
Wenn Du das das 2'te mal aufrufst ist der 1.ComPort auf jeden Fall weg, und die Connection wird dem Garbage Collector vorgeworfen. gewollt?

Arbeitest Du mit 2 Fenstern(Instanzen von Form1) für Port 3 und 5 oder mit einem? Wenn Du mit 2 arbeitest, bekommst du mit static ein Problem.

Zum warten kannst Du Dir zum beispiel verschiedene States definieren. z.B. GetDataSended, InitSended etc. und in deinem Receiced Event halt entsprechend der Anfrage reagieren, die Du dann ja kennst.

09.12.2010 - 12:11 Uhr

Hallo,

dein serialPort ist static. Ändere das und dein Port wird auch überleben.

09.12.2010 - 11:08 Uhr

Hallo,

OpenPOP ist eine freie .Net Library und Quelloffen. Wenn Du keine dll mit einbinden magst, kannst Dir zumindest dort abgucken wie es funktioniert.

02.12.2010 - 14:35 Uhr

Falsch. Return -1 wird in keinem möglichen Fall erreicht, es sei denn das "End If" hat auch einen Bedeutung und der IF-Block-Header fehlt nur in diesem Beispiel.

Davon bin ich ausgegangen.

ich denke das ist die Bedingung:

'wenn ein Job in der DB steht, hole diesen und weise diesen der Variablen lResult zu

02.12.2010 - 14:23 Uhr

Hallo,

ich habe eine Consolen Anwendung.. bzw geht es um Windows .Net Programme != Silverlight. In meiner Anwendung referenziere ich mehrere WCF Services, und bei einem muss ich mich Anmelden, damit ich die Methoden der anderen Services benutzen kann. (Forms Authentification).

In Silverlight ist das kein Problem, ich reiche einfach den Cookie Container von einem Service zum anderen. Dummerweise geht das mit der Consolen Anwendung nicht und ich muss jede Methode die ich aufrufen will Wrappen:


public void UpdateSupplier (Supplier supplier)
        {
            using (var scope = new OperationContextScope(SupplierService.InnerChannel))
            {
                OperationContext.Current.SetOutgoingCookies(_cookies);
                SupplierService.UpdateSupplier(supplier);
            }
        }

Das finde ich schon unschön. Wie würdet ihr das lösen? Ich dachte an soetwas wie einen generischen Delegate den ich einfach durchreiche und nachdem ich den Context aufgemacht habe, ausführe. Leider bin ich auf die "perfekte" lösung noch nicht gekommen.
Ich möchte auch ungern mit untypisierten objecten arbeiten.. dann wrappe ich lieber.

Grüße & danke fürs lesen.

02.12.2010 - 13:52 Uhr

Hmm hab das gerade mal ausprobiert.. und wie erwartet werden nur die Propertys mitgenommen die als DataMember gekennzeichnet sind.. Wobei ich extra nochmal Serializable drüber geschrieben hab. Aber ich glaube das tangiert den DataContract Serializer gar nicht. ist imho nur für den BinaryFormatter.


public class Program
    {
        static void Main(string[] args)
        {
            var test = new Test {Member = "Serialisiert", NoMember = "Nicht Serialisiert"};

            using (var stream = new MemoryStream())
            {
                DataContractSerializer serializer = new DataContractSerializer(typeof(Test));
                serializer.WriteObject(stream,test);

                stream.Seek(0, SeekOrigin.Begin);

                DataContractSerializer serializer2 = new DataContractSerializer(typeof(Test));
                var obj = serializer2.ReadObject(stream);

            }


        }
    }

    [DataContract]
    [Serializable]
    public class Test
    {
        [DataMember]
        public string Member { get; set; }

        public string NoMember { get; set; }
    }

02.12.2010 - 13:17 Uhr

Aber bevor ich dem Threadstarter erklärt habe was da einzustellen ist, besser nen try catch drum 😉 Man kann Rom auf vielen wegen erreichen.

Und stimmt, wenn ein Thread für immer drin stecken bleibt, wird kein anderer Thread return -1 erreichen können.

Gruß

02.12.2010 - 08:07 Uhr

Nein, einer ist immer der erste.

wenn SyncLock das Gegenstück zu lock(object) ist.

Ich denke dein Code wird immer Return lResult 3 Zeilen darüber aufrufen. Oder bei der Datenbankanfrage hängen bleiben.

Noch eine möglichkeit ist natürlich, und das ist die warscheinlichste das da ne Exception fliegt, in einem Thread ohne Fehlerbehandlung.. Bau mal nen try Catch drum und setz nen Breakpoint im catch.

01.12.2010 - 22:32 Uhr

Hallo,

der Thread hält so lange an, bis der andere Thread den Block verlassen hat.

Beachte aber bitte, das wir uns hier hauptsächlich mit c# beschäftigen.

Gruß

16.11.2010 - 07:03 Uhr

Hallo,

das Programm bleibt nicht stehen. Das Studio springt nur zu der Exception, weil es mitbekommen hat, das da was schief läuft. Wenn Du das Programm ohne Debugger startest wird es auch nicht "stehen bleiben". Einfach F5 drücken, und das Programm schmeisst die Exception weiter nach oben.

Gruß

09.11.2010 - 08:18 Uhr

Hallo,

was steht den sonst noch in der Exception? Meinst gibts da noch aussagekräftigere Meldungen drin.. und auf InnerExceptions achten.

05.11.2010 - 09:03 Uhr

SendKeys gibt es auch in .Net und somit auch in c#

03.11.2010 - 14:19 Uhr

Die Server dll muss in einem der probe Verzeichnisse vom client liegen (meist neben der Anwendung).

Aber am besten Du lagerst die Typen, die Du serialisieren willst, in eine seperate Dll aus und referenzierst sie vom Client und vom Server.

29.10.2010 - 10:09 Uhr

Hmm komisch.. machst Du vllt noch irgendwas anders?


namespace ConsoleApplication1
{
    class Program
    {
        public static object lockobject = new object();

        static void Main(string[] args)
        {
            var x = Type.GetType("Test"); // geht nicht
            var y = Type.GetType("ConsoleApplication1.Test"); //geht
            var z = System.Reflection.Assembly.GetExecutingAssembly().GetType("Test"); // geht nicht
            var a = System.Reflection.Assembly.GetExecutingAssembly().GetType("ConsoleApplication1.Test"); // geht 
        }
    }

    public class Test
    {
    }
}

edit: Ok.. Wenn man namespaces komplett weg lässt fluppts

28.10.2010 - 08:02 Uhr

Hallo,

nachdem ich mich in die Themen ein wenig eingearbeitet habe, werde ich tatsächlich Table Splitting verwenden.

Grüße & THX

Jan