Laden...
Avatar #avatar-2909.png
michlG myCSharp.de - Experte
Student + Programmierer Naturns - Südtirol - Italien Dabei seit 26.07.2007 3.430 Beiträge
Benutzerbeschreibung

Forenbeiträge von michlG Ingesamt 3.430 Beiträge

22.12.2010 - 21:54 Uhr

Hallo und willkommen bei myCSharp.de

Ich hoffe ihr könnt damit was anfangen...

Leider nicht viel.
Wie genau verhält sich deine Anwendung? Hängt sie sich nur auf (Programm reagiert nicht mehr) oder bekommst du eine Exception?
Wenn ja welche.

Falls sie sich nur aufhängt dann guck mal hier: [FAQ] Warum blockiert mein GUI?

Denn die Operationen die etwas mehr Zeit in anspruch nehmen könnte muss / sollte man in einen Thread auslagern damit die GUI sich nicht aufhängt.
Aber mehr Details dazu findest du im geposteten Link

Gruss
Michael

22.12.2010 - 09:24 Uhr

Hallo Da_Flo,

verwende besser eine Datenklasse welche eine Zeile repräsentiert.
An das DataGrid bindest du dann eine ObservableCollection<Datenklasse> welche die ganzen Items enthält.

Anschließend kannst du dir über den CollectionView das CurrentItem rausholen.

Dabei hast du keinerlei Abhängigkeiten zwischen der GUI und dem ViewModel.
Direkt auf das DataGrid zuzugreifen ist in WPF nicht der übliche Weg.

Gruss
Michael

20.12.2010 - 21:30 Uhr

Hexenwerk wäre es sicher keines, aber diese Kleinigkeiten können auch gut von Dritten gemacht werden 😃
Und der R# kostet ja kein Vermögen

20.12.2010 - 21:20 Uhr

Hallo,

Wie ist die Performance von Resharper? Bisher habe ich nicht nur positives gehört.

Klar, je mehr man solche Tools verwendet desto mehr beeinträchtigt man die Performance. Aber beim Resharper kann ich echt nicht klagen.
Das VS läuft sehr flüssig und hängt sich so gut wie nie auf.

Bei älteren Versionen vom Resharper hat es schon manchmal etwas Performanceprobleme gegeben, aber überhaupt die neueste Version läuft echt top.

Ich kann den Resharper also nur weiterempfehlen, denn er bietet unglaublich viele Funktionen.
Wenn man nachher ohne R# programmieren muss dann merkt man erst wie die arbeit mit dem R# schneller wird

Gruss
Michael

20.12.2010 - 20:14 Uhr

Hallo Technologie100,

Welche IPAdresse muss ich eintragen, die Zugriff haben. Meine "Public"-IPAdresse ist es schonmal nicht, da immer ein Fehler zurück kommt. "%" will ich nicht eintragen.

Schon mal **localhost **oder 127.0.0.1 ausprobiert
Das ist die sogenannte Loopback Adresse (also die zu dir selber).
There is no place like 127.0.0.1 😉

Gruss
Michael

20.12.2010 - 19:51 Uhr

Hallo S.R.,

anstatt mit WaitForExit zu warten kannst du das ganze auch Eventbasiert machen.
Dazu musst du einfach eine Variable setzen und kannst dann das Exited-Event registrieren.


myProcess.EnableRaisingEvents = true;
myProcess.Exited += new EventHandler(myProcess_Exited);

Hier der MSDN Link dazu: Process.Exited-Ereignis

Somit kannst du dir selbst ein Timeout basteln (timer) und dann das Event unregistern (-=)

Gruss
Michael

20.12.2010 - 16:37 Uhr

Hallo,

willkommen bei myCSharp.de

Wie man einen Array erstellt findest du hier: 🛈 📗 :rtfm:
Hier noch ein Tutorial dazu: Work with arrays

Das eigentliche Problem ist hier aber die Vererbung. Und zwar greifst du in getSFR auf table zu. Und diese Variable ist nicht zugreifbar da du erst in der davon abgeleiteten klasse deine table definiert hast. Schieb deine table in die Sfr klasse dann müsste es passen.

Wie man solche Syntaxfehler selbst lösen kann siehst du hier: [Hinweis] Syntaxfehler selbst lösen (Compilerfehlermeldungen)
Guck dir auch mal die Namingconventions von Microsoft an: Naming Conventions

Ich muss dich auf [Hinweis] Wie poste ich richtig? 1.1 und 1.1.1 verweisen da wir hier ein bestimmtes Maß an Eigeninitiative sowie etwas Grundwissen vorraussetzen.

Gruss
Michael

20.12.2010 - 16:00 Uhr

Hallo,

guck mal hier: How to get server url

Gruss
Michael

20.12.2010 - 14:31 Uhr

Hallo thas,

mit TryParse bist du schon auf dem richtigen Weg.

Wenn du eine Hex Zahl parsen willst dann kannst du den NumberStyle beim Parsen setzen.
Siehe: How to: Convert Between Hexadecimal Strings and Numeric Types (C# Programming Guide)

Dass du da jeden Typen abfragen musst mag zwar nicht schön aussehen, aber da wird dir fast nichts anderes übrig bleiben.
Evtl. könntest du über Regex ein Pattern schreiben das dir sagt ob der Wert eine Zahl, hex, String oder was auch immer ist.
Das ist sicherlich damit möglich, aber in Regex kenn ich mich nicht so aus
Hier ein Tutorial dazu: [Artikel] Regex-Tutorial

Aber was ist überhaupt der Sinn hinter der ganzen Sache?
Kann der User bei dir einfach die Werte als String eingeben und du machst nachher damit alle möglichen Dinge.
Dabei musst du aber beachten dass es da viele Sonderfälle geben kann, welche man nur sehr schwierig abfragen kann.
z.B. ist AA ein hexwert oder ein String???

Gruss
Michael

20.12.2010 - 14:25 Uhr

Hallo kkirchhoff,

was für einen Webserver willst du da herausfinden?
Was hast du für eine Verbindung zu dem Server?

Möchtest du über die IP den DNS Namen des Server rauskriegen?

Poste bitte mehr Details, denn so können wir nur raten 😃

Gruss
Michael

20.12.2010 - 13:44 Uhr

Hallo,

wieso verwendest du ein Canvas?
Nimm doch besser ein UniformGrid (oder Grid) und setze die beiden UserControls in eine Zeile.

Falls es sich nicht streckt dann musst du noch HorizontalAlignment="true" setzen

Gruss
Michael

18.12.2010 - 15:47 Uhr

Hallo Coja,

die Projekte müssten normalerweise auch auf einem anderen Rechner mit VS2010 laufen.
Du musst allerdings all nötigen Bibliotheken haben.
D.h. wenn du welche verwendest die nicht schon dabei sind dann musst du diese selbst rüberkopieren.

Was ist denn der Fehler der dir gezeigt wird?

Gruss
Michael

18.12.2010 - 15:25 Uhr

Hallo wpf23,

von einem Thread aus kann man auf kein Objekt der GUI oder Ähnliches zugreifen.
Um das zu können muss man sicherstellen dass die Aktion im richtigen Thread ausgeführt wird.

Schau dir den Thread von winSharp93 an, dort ist bis ins kleinste Detail beschrieben was man beachten muss und wie man es richtig macht.

Ich weiß dass es auf den ersten Blick erschreckend wird, aber wenn man es mal verstanden hat dann ist es logisch.

Bitte beachte: [Hinweis] Wie poste ich richtig? 1.1 + 1.1.1 + 8

Gruss
Michael

17.12.2010 - 19:03 Uhr

Hallo,

da gibt es schon massenweise Threads dazu.
Guckst du hier:
"C# von Kopf bis Fuß" empfehlenswert?
Suche (Buch mit) Programmierübungen
Buch für Anfänger. 2 zur Auswahl
Einstieg in C# (und in Software-Entwicklung?)
C# Buch für Anfänger OK?

Die Galileo Openbooks sind IMHO sehr gut für den Anfang geeignet.

Bitte beachte [Hinweis] Wie poste ich richtig? 1.1, denn mit der Suche hättest du das auf den ersten Blick gefunden

Gruss
Michael

17.12.2010 - 16:45 Uhr

Hallo,

Wie müsste denn ein Style dazu aussehen, damit dieser funktioniert?

Hm, meine Idee einfach die Columns zu setzen wird wohl nicht funktionieren.
Denn die Columns sind nicht writeable deshalb kann man es nicht mit dem Style setzen.

Du könntest aber in deinem UserControl ein Property (Collection von Columns) definieren welche er dir setzen kann.
Diese fügst du dann als Spalten in deinem (internen) DataGrid hinzu.

Guckst du hier: Wie binde ich ein WPF DataGrid, eine variable Anzahl von Spalten?

Gruss
Michael

17.12.2010 - 16:24 Uhr

Hallo,

Woran liegt das bzw. was muss ich tun, damit ich wieder auf meine Columns zugreifen kann?

Woran das liegt kann ich dir sagen.
In deinem ControlTemplate definierst du ein neues DataGrid.
Damit sagst du folgendes: Mein DataGrid soll aussehen wie ein DataGrid mit X Columns.

Das mag zwar richtig klingen und auch funktionieren ist aber nicht wirklich optimal.
Denn du hast ein DataGrid in einem DataGrid

Wenn du nun auf die Columns zugreifst dann greifst du auf die des äusseren DataGrids zu. Diese gibt es natürlich nicht weil du nur die des Inneren gesetzt hast.

Ich würde von diesem Aufbau abstand nehmen und es auf eine andere Weise implementieren.
z.B. indem du mit einem Style die Columns des DataGrid setzst und nicht indem du das Template setzt.

Gruss
Michael

17.12.2010 - 16:18 Uhr

Hallo,

guck dir mal das Tutorial an welches ich vorhin verlinkt habe.
Das mag auf den ersten Blick zwar etwas heftig aussehen, aber dort kannst du dir die Information rausholen die du benötigst.

Zudem kannst du damit auch noch besser verstehen wie genau das ganze System funktioniert und was man beachten muss.

Für deine Fall ist diese Methode besonders interessant


/// <summary>
/// Wartet auf Daten vom Server.
/// Wurden innerhalb der Zeitspanne "TimeOut" (in ms) keine
/// Daten empfangen, wird null zurückgegeben, ansonsten ein
/// Byte-Array mit den empfangenen Daten.
/// </summary>
/// <returns>null oder ein Byte-Array mit empfangenen Daten</returns>
public byte[] receive()
{
    try
    {
        int cnt = 0;
        receiving=true;
        MemoryStream mem = new MemoryStream();// Empfangspuffer
        byte[] buffer = new byte[BufferSize];
        while (cnt<(TimeOut/SleepTime))
        {
            while (socket.Available>0)
            {
                int bytesRead = socket.Receive(buffer,buffer.Length,SocketFlags.None);
                if (bytesRead<=0) continue;
                mem.Write(buffer,0,bytesRead);
            }
            Thread.Sleep(SleepTime);
            if (mem.Length>0 && socket.Available==0)
            {
                receiving = false;
                return mem.ToArray();
            }
            else
            {
                cnt++;
            }
        }
        receiving=false;
        return null;
    }
    catch
    {
        receiving=false;
        return null;
    }
}

Diese wartet auf eine Antwort vom Server. Wird die Timeoutzeit überschritten dann gibt sie null zurück.

Bei dir müsste die Methode nahezu identisch aussehen.
Deine Schleife hat nicht funktioniert weil du abgefragt hast ob bytes > 0 ist was es beim ersten Durchlauf sicher nicht ist da der Server noch nichts gesendet hat, deshalb ist er sofort aus der Schleife gesprungen.

Gruss
Michael

17.12.2010 - 16:04 Uhr

Hallo,

Allerdings bietet mir die Intellisense die Controls nicht an und auch FindName funktioniert nicht (Fehlermeldung: Name im Kontext nicht vorhanden).

Von wo aus versucht du auf die GUI zuzugreifen?
Wenn du das direkt von deiner SerialKlasse aus machen willst dann funktioniert das so einfach nicht => und das ist auch gut so 😃

Guck mal hier: [FAQ] Kommunikation von 2 Forms
Du kannst in deiner SerialPort-Klasse ein Event schmeißen auf welches deine GUI dann reagiert und die Daten anzeigt.

Bitte beachte: [Hinweis] Wie poste ich richtig? 1.1 und 1.1.1

Gruss
Michael

17.12.2010 - 15:44 Uhr

Hallo Purm,

willkommen bei myCSharp.de

Hier ein Tutorial dazu: [Tutorial] Client-/Server-Komponente über TCP-Sockets
Du musst am Client warten bis du eine Antwort empfängst, Details dazu findest du im geposteten Tutorial.
Es gibt auch viele Technologien die dir da einiges an Arbeit abnehmen (z.B. WCF, Remoting usw.) aber diese sind für diesen Fall wohl etwas oversized.

Bitte beachte [Hinweis] Wie poste ich richtig? 1.1 und 1.1.1

Gruss
Michael

16.12.2010 - 20:46 Uhr

Hallo,

wenn der Befehl nicht vorkommt dann hast du das Event auch nicht registriert.
Du musst das im Constructor setzen (ausser du hast die Registrierung schon mit dem Designer gemacht).

Was genau kann ich unter WPF oder Winforms verstehen?

Das sind die verschiedene Technologien um Oberflächen zu erstellen. Und Windows Mobile fällt in die winforms kategorie
Mehr dazu gibts auf google 😉

Bitte beachte: [Hinweis] Wie poste ich richtig? 1.1 und 1.1.1 wir setzen als Grundlagen voraus dass man weiß wie ein Event registriert wird.
Zudem musst du etwas mehr Eigeninitiative zeigen. Ein kleiner Blick auf google hätte dir schnell gesagt was WPF / Winforms ist.

Gruss
Michael

16.12.2010 - 20:30 Uhr

Hallo djinty,

willkommen bei myCSharp.de

Hast du das Event bei deinem Textfeld auch registriert?
Also mit


textfeld.GotFocus += txtDezimalzahl_GotFocus;

Setze mal einen Breakpoint in diese Methode dann siehst du ob er dir überhaupt reinspringt

PS: verwendest du WPF oder Winforms (damit ich es in das richtige verschieben kann)?

Gruss
Michael

15.12.2010 - 21:28 Uhr

Hallo,

wie FZelle gesagt hat überschreibst du den User nicht, sondern erstellst nur ein neues Objekt.
D.h. die user Variable zeigt dann auf den neuen User, aber den Alten gibt es immer noch.
Alle Änderungen die du danach machst werden am neuen User getätigt.

Wenn du den existierenden User ändern willst dann darfst du nicht einen neuen erstellen sondern einfach die Eigenschaften umändern. (user.Name = "blabla";)

Gruss
Michael

13.12.2010 - 21:26 Uhr

Hallo Klayman,

willkommen bei myCSharp.de

Leider muss ich dich schon auf [Hinweis] Wie poste ich richtig? 1.1 + 1.1.1 hinweisen.
Wir setzen hier ein bestimmtes Maß an Grundlagen und Eigeninitiative voraus und diese Frage zählt eindeutig zu den Grundlagen.

Mir ist schon klar, dass es beim Anfang nicht gerade einfach ist aber da darf man sich nicht unterkriegen lassen 😃

Gruß
Michael

13.12.2010 - 12:37 Uhr

Hallo,

du kannst auch mal auf Cyberport gucken.
Dort kann man gebrauchte Geräte kaufen.

Dabei sind Austellungsstücke, oder einfach Handys die defekt waren und vom Hersteller repariert wurden. usw.

Gruss
Michael

11.12.2010 - 17:19 Uhr

Hallo Bartando77,

du musst das **String myString = ** weglassen, dann sollte es funktionieren.
Da die Methode IniReadValue dir direkt einen String zurückgibt, dann brauchst du da nicht noch diese Zwischenvariable erstellen und den Wert zuweisen.

Wir setzen hier aber solche Dinge als Grundlagen voraus.
Siehe [Hinweis] Wie poste ich richtig? 1.1 1.1.1

Gruss
Michael

10.12.2010 - 22:12 Uhr

Hallo,

das Abschneiden ist eigentlich nicht die optimale Lösung, da es nicht wirklich performant ist.
Hab ich nur mal vorhin am Rande erwähnt aber nicht wirklich weit gedacht 😉

Besser ist wenn deine Methode einfach einen int zurückgibt und diesen dann beim nächsten Aufruf wieder bekommt.

Hier ein kleiner Pseudocode


private void BlaBla()
{
    byte[] data;
    int pos = 0;
    while(pos<data.Length)
    {
        pos = GetPacket(data,pos);
    }
}

private int GetPacket(byte[] data, int startIndex)
{
     //Daten auslesen und irgendwo hinspeichern (wo auch immer du willst)
     return startIndex + LaengeDerAusgelesenenDaten;
}

So in etwa habe ich das gemeint.

Du kannst die GetPacket-Methode auch direkt in die Schleife schreiben (wie du willst).
Da gibt es bestimmt Massenweise Lösung aber das ist IMHO eine die recht einfach zu verstehen ist.

Gruss
Michael

10.12.2010 - 20:29 Uhr

Hallo Bartando77,

du denkst da nur etwas zu kompliziert 😉

Eigentlich müsste es reichen wenn du einfach eine Schleife macht welche so lange läuft bis der Array leer ist.
Jedes mal rufst du eine Methode auf die in den ersten beiden Bytes die Länge des Pakets ausliest.
Dann wird diese Methode das ganze Paket auslesen und aus dem Array entfernen (abschneiden) und dieses wieder an die Methode (die mit der Schleife) zurückgeben.

Welche dann checkt ob noch elemente im Array sind. Wenn ja, dann wird die ganze Sache nochmal gemacht.

Du musst den Array eigentlich auch nicht cutten.
Es reicht wenn die DataConvert-Methode einen int mit dem aktuellen Index zurückgibt. Wenn dieser kleiner als die Länge des Arrays (-1) ist dann einfach fortsetzen.

Gruss
Michael

10.12.2010 - 16:23 Uhr

Hallo AllForOne,

Wie poste ich richtig habe ich schon durch gelesen, trotzdem mache ich es iwie immer falsch.

Das sag ich das nächste mal auch wenn mich die Polizei blitzt 😉

Wenn du schon selbst sagst du dass du die Regeln kennst dann solltest du doch mittlerweile wissen dass ein

kommen nur Fehler.

nichts bringt da man so nicht helfen kann. Wir müssen die genaue Fehlermeldung haben (ok, in diesem Fall sieht man es shcon trotzdem) aber prinzipiell immer die fehlermeldung angeben.

Wenn du es in die Methode auslagerst dann darfst du das Form1 objekt nicht neu erstellen da du sonst jedes mal ein neues Fenster machst und dann auf dieses zeichnest.

Zum Thema Zeichnen => [Tutorial] Zeichnen in Windows-Programmen (Paint/OnPaint, PictureBox)
Dort ist genau beschrieben was man dabei alles beachten soll / muss.

Das sind aber absolute Grundlagen die wir hier aus gutem Grund voraussetzen.

Aber bitte achte in Zukunft auf [Hinweis] Wie poste ich richtig? denn du hast gleich gegen eine ganze Serie von Punkten verstoßen: 1.1 + 1.1.1 + 5 + 6

Gruss
Michael

09.12.2010 - 19:42 Uhr

Hallo biu,

nur so als kleiner Hinweis.
Das .NET Framework 2 hat um die 4500 Klassen.
Beim 3.5er sind es um die 9000end Klassen.

Und beim 4er habe ich keine Zahl, aber da sind es sicher über 10000end klassen.

Dabei handelt es sicher aber nur um die öffentlichen klassen!

Und da kann man wohl kaum den Überblick behalten wenn es auf eine 30m² große Wand geklebt wird, da man ohnehin meist nur einen Bruchteil der Klassen wirklich braucht.

Da ist besser wenn ihr das Geld in eine Schulung investiert bei der euch viele nützliche Klassen gezeigt werden die nur wenige Menschen kennen 😃

Gruss
Michael

08.12.2010 - 21:56 Uhr

Hallo cinos,

Aber ich möchte nicht Stunden lang irgendwelchen Code durcharbeite, das für meine Bedürfnisse total Overkill ist.

Nur so schnell kann man das nicht erklären da das versenden über Netzwerk / Internet doch wenigstens etwas mehr als die Grundlagen voraus setzst.

Da gibt es auch noch viele verschiedene Möglichkeiten.
Du kannst einen Webservice erstellen, über Remoting, Sockets usw. machen

Such mal in Google nach C# Chat Applikationen da kannst du dir einiges abgucken.

Bitte beachte: [Hinweis] Wie poste ich richtig? 1.1 und 1.1.1
Wir setzen hier bestimmte Grundlagen + Eigeninitiative voraus. Und die Eigeninitiative hast du eindeutig nicht gezeigt.

Gruss
Michael

08.12.2010 - 18:33 Uhr

Hallo Foufou,

ist das StartProcess ein blockierender Vorgang?
D.h. löst das auf dem Server irgendwas aus was längere Zeit dauert?

Weil man sollte immer darauf achten dass man den client nicht blockert, da ist besser wenn du diese Aktionen in einen Thread auslagerst.

Was meinst du überhaupt mit reagiert nicht mehr? Debugge mal durch den Code damit du siehst wo er hängen bleibt.

Gruss
Michael

08.12.2010 - 13:36 Uhr

Hallo,

wenn du Textwrapping willst dann ist es am einfachsten wenn du einen TextBlock in den Button setzst und bei diesem das TextWrapping aktivierst.

Einen Zeilenumbrauch kannst du machen indem du ein StackPanel mit Orientation="Vertical" in den Button tust.
Dann kannst du dort die TextBlöcke untereinander anordnen.

Für das Ganze kannst du natürlich noch die Styles erstellen dann musst du es nicht bei jeden Button aufs neue machen.

Gruss
Michael

08.12.2010 - 13:21 Uhr

Hallo,

Mich wundert es ehrlich gesagt nur, dass SL / Enitity-Framework Combination nicht funktinoiert. Sollte man doch schon erwarten können.

Ich vermute dass das Problem auch nicht in der SL App liegt sondern im Webservice.
D.h. den Fehler gibt es schon beim übermitteln der Daten

Im SL selbst hast du mit den EF Objekten keine Probleme, aber halt beim Übertragen kann es knallen.

Aber ohne Details kann ich da auch nichts zu sagen.

Meine Funktion heißt testweise DoWork(), die Fehlermeldung tritt auf in EndDoWork()

Mit den Methodennamen alleine kann ich da nicht viel mit anfangen

Gruss
Michael

08.12.2010 - 11:26 Uhr

Hallo,

du kannst dazu evtl. im Closing / Closed Event darauf reagieren und das Closen abbrechen und das Fenster nur verstecken.
Das wäre eine Option, wenn auch nicht eine wirklich schöne.

Siehe: Form.Closing Event

Die Einstellungen wirst du wohl irgendwo an einer zentralen Position speichern?
Wenn ja, dann könntest du das Fenster auch jedes mal wieder damit neu erstellen.
Denn das Einstellungsfenster wird normalerweise nicht so oft geöffnet dass es sich bezahlt macht den Speicher mit versteckten Forms zu verschwenden.

Gruss
Michael

07.12.2010 - 17:42 Uhr

Hallo aerodur,

wo bekommst du die Exception?
Knallt es schon beim schicken der Daten oder erst beim Anzeigen?

Vermutlich versuchst du direkt die EF Objekte über WCF zu schicken, was out of the box nicht funktioniert, da EF die Proxyobjects verwendet.

Um das Problem zu beheben kannst du EF mit POCO Objects verwenden.
Mit SelfTracking Objects müsste es auch funktionieren.

Schau dir mal den Log auf dem WCF Server an, dieser ist meist aufschlußreicher.

Gruss
Michael

07.12.2010 - 17:09 Uhr

Hallo #coder#,

versuch einfach mal einen ScrollViewer darüber zu legen

Gruss
Michael

07.12.2010 - 16:05 Uhr

Hallo,

wie schon von mir und serial gesagt brauchst du den ProcessController nicht selbst zu starten.
Das macht schon der WCF Service.

Dann kann der Client auf die dort erstellte Instanz zugreifen.
Wenn dort immer noch was null ist dann musst du in der ProcessController Klasse dafür sorgen dass sie sich selbst hilft.
Von Aussen bringt es dir nix wenn du eine zweite ProcessController instanz erstellst.

Beispiel: Ein Mieter beklagt sich beim Vermieter dass die Heizung nicht funktioniert.
Dieser stellt daraufhin ein neues Haus auf und repariert dort die Heizung.
Das macht den Mieter natürlich nicht glücklich da bei ihm immer noch das selbe Problem ist.

Und genau das machst du hier mit deiner selbst erstellten ProcessController-Instanz

Gruss
Michael

07.12.2010 - 15:42 Uhr

Hallo Foufou,

Also es ist richtig wie ich vorgehe: dass man ganz einfach von ein Host den Service Classe mit.....

Ich bin zwar nicht der WCF Experte aber das ist IMHO nicht logisch.
Dein WCF Service erstellt sich die Instanz schon selbst. Und wenn du dir an einem anderen Ort selbst eine Instanz erstellst dann ist es dem Service relativ egal.

Die Instanz wird AFAIK erst erstellt sobald sich der Client verbindet.
Der Unterschied zwischen den einzelnen Moden ist dass er die erstellte Instanz wiederverwendet oder eben nicht.

Aber selbst erstellen brauchst du die Instanz definitiv nicht, da diese dann unabhängig vom WCF Service läuft.

Gruss
Michael

07.12.2010 - 14:21 Uhr

Hallo Foufou,

du hast bei deinem ProcessControl den InstanceContextMode.PerCall gesetzt.
Dadurch wird bei jedem Call eine neue Instanz erstellst, was ja nicht das ist was du willst.

Verwende besser InstanceContextMode.Single damit du immer die gleiche Instanz hast.
Evtl. ist auch der PerSession-Mode was für dich.

Gruss
Michael

06.12.2010 - 17:33 Uhr

Hallo kelkes,

ich habe es nicht als Nachteil hingestellt sondern nur gesagt dass es fummelig ist die ganzen Dateien per Hand schreiben zu müssen.

Klar, bei EF kann jeder Depp ein Mapping generieren lassen auch ohne zu wissen was im Hintergrund abläuft.
Aber ein Designer ist IMHO praktisch, da man sich direkt das Model aus einer bestehenden Datenbank generieren lassen kann.
Es ist sicher sauberer wenn man da manuell alles macht da man die Dinge bis ins kleinste Detail beinflussen kann.
Aber der EF Designer ist halt einfach praktisch, wenn man nur mal schnell was ändern will.

Da hat aber jeder seine eigene Meinung, was ich auch gut finde 😃

Gruss
Michael

06.12.2010 - 16:11 Uhr

Hallo ogelogel,

willkommen beim myCSharp.de

das non plus ultra ist wohl immer noch NHibernate.
Damit kann man fast alles machen aber es ist ein bisschen fummelig da es keinen wirklich brauchbaren Designer gibt. Deshalb muss man sich selbst die Mappingdatei (als XML oder im Code) erstellen und die Objekte selbst anlegen.
Dadurch hat man bei einer kleinen Änderungen immer viele Punkte wo man was ändern muss.

Mit .Net 4 kam auch das Entity Framework 4 mit was IMHO echt brauchbar ist.
Es bietet auch ziemlich viele Funktionen und einen Top Designer.

Momentan arbeite ich hauptsächlich mit dem EF

Gruss
Michael

06.12.2010 - 15:50 Uhr

Hallo Da_Flo,

ich habe gehört dass der Winamp Server nicht schlecht sein soll.
Ob der aber alle deine Wünsche erfüllt kann ich dir nicht sagen da ich ihn nicht verwendet habe.
Er ist aber wohl einen Blick wert.

Gruss
Michael

06.12.2010 - 12:37 Uhr

Hallo,

klar, in dem Beispiel haben die auch die Entry-Assembly verwendet.

Um an die Assembly eines bestimmten Types zu kommen kannst du so vorgehen


var str = typeof(MyType).Assembly.GetName().Version.ToString();

Also nur einen Type der sich in deiner Assembly angeben dass müsste das funktionieren

Gruß
Michael

06.12.2010 - 11:52 Uhr

Hallo,

das kannst du über Reflection von der Assembly rauskitzeln.
Hole also die Assembly die du willst und dann kannst du so an die Version kommen.
How to get [assembly: AssemblyVersion("1.0.*")] value at runtime?

Gruss
Michael

06.12.2010 - 11:48 Uhr

Hallo,

ich verwende das UpdateSystem.net was für meine Zwecke mehr als ausreichend ist.

Gruss
Michael

05.12.2010 - 12:58 Uhr

Hallo,

Wie erkenne ich auf dem GUI welche Zeile gerade dran ist ?

Da musst du dir merken welcher Webservice zu welcher Zeile gehört (z.b. in einem Dictionary).
Dann kannst du nachher wieder zurückverfolgen was du aktualisieren musst.

Aber das ist IMHO keine wirklich elegante Lösung.
Kannst du die Daten nicht alle in einem Rutsch laden? Oder sind das verschiedene Webservices?

Gruss
Michael

04.12.2010 - 16:03 Uhr

Hallo ky_fr34k,

Was meinst du mit Vermittlungs-Server?

Also ich hatte es schon so gedacht, das jeder Client nur mit dem Server kommuniziert.

Bei TeamViewer ist ein zentraler Server über welchem die Kommunikation abläuft.

Wenn du bei dir einen WCF Server laufen lassen willst, dann musst du PortForwarding am Router einstellen sonst hast du keine Chance.

Bei den Clients musst du am Router nix einstellen aber überall wo ein Server steht kommst du um das PortForwarding nicht rum

Gruss
MIchael

03.12.2010 - 14:41 Uhr

ich verwende Consolas.
Aber es sind auch viele andere Schriftarten ok, wenn es nicht gerade Comic Sans MS oder ähnliches ist 😃

03.12.2010 - 14:39 Uhr

Hallo winSharp93,

@michlG: Die ookii-Dialoge sind Wrapper um die WinAPI-Funktionen, oder?

Hm gute Frage 😃
Ich glaube mich daran zu erinnern dass die den FolderBrowserDialog nachgebaut haben.
D.h. es ist nicht nur ein Wrapper auf die WinApi

Aber 100%tig sicher bin ich mir da auch nicht, den Code von denen hab ich mir nicht angeguckt 😃

Grüsse

03.12.2010 - 10:49 Uhr

Hallo Levion,

in WPF gibt es schon einen FolderBrowserDialog, welches im Win32 Namespace liegt.
Aber kurz gesagt wird im Hintergrund trotzdem der selbe FolderBrowserDialog verwendet.

Guck dir mal die ookii dialogs an.
Da ist unter anderen ein schöner FolderbrowserDialog dabei

Gruss
Michael