Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von Stipo
Thema: Test auf MouseLeftButtonDown und MouseDoubleClick
Am im Forum: GUI: WPF und XAML

Zitat
So wie ich den Code verstehe, würde aber auch bei einem "DoubleClick" davor einmal der "SingleClick" auslöst. Und dies will ich gerade nicht haben.
Hast Du den Code mal ausprobiert?

Analog dazu, ist in Windows ein DoubleClick immer 2 SingleClick.

Um nun mit obiger Methode eine Unterscheidung zwischen Double- und SingleClick zu haben, würde ich im MouseLeftButtonDown_Click ein Delay rein machen, das der SingleClick dann erst als SingleClick gewertet wird, wenn nicht innerhalb der eingestellten Zeit dann ein DoubleClick erkannt wurde.

Grüße Stephan

Thema: [gelöst] Brauche kleinen Denkanstoss bei einer überwachten Queue und Threading
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo kleines_eichhoernchen,

Log4Net kenne ich noch nicht. Hab zwar schon ein paar sachen darüber gelesen, dachte aber bis jetzt, das es nur logging kann.
Das man damit auch Smtp Mails raus schicken kann, wusste ich nicht.

Ich muss in meiner Anwendung sowieso ein Logging System integrieren, da ich ja sonst keinerlei Fehler mit bekomme, die mein Windows Dienst eventuell produziert, aber derzeit will ich das mal so belassen und nicht die Log4Net möglichkeiten für den Email Versand nutzen.

Dein Beispiel entspricht nicht ganz, dem was ich mache.
Ich packe jede Email, die versendet werden soll ersteinmal in eine SyncQueue rein. Bei deinem Beispiel steckst Du das aber direkt in einen Thread, der die Email verschicken soll.

Grundlegend soll es aber so realisiert sein, das keine Email verloren gehen darf/soll. Wenn nun aber der Email Versand fehl schlägt, müsste ich bei deinem Beispiel das Email ja trotzdem noch in eine SyncQueue packen, die das solange speichert, bis die Email wieder versendet werden kann ( Netzwerk Fehler etc ).

Ich gehe in meiner implementierung nämlich bei einer Exception bei und stecke die Email erstmal zurück in die Queue.

So kann ich bei andauerndem Netzwerk Fehler zB die Queue noch weg serialisieren oder so.
Auch ist ein Problem dabei, das gerade der Versand lange andauert. Was aber wenn dann zwischenzeitlich der Dienst neu gestartet wird. Dann müsste der Dienst ja solange warten bis alle Mails draußen sind.

Das umschiffe ich durch die Queue, da ich die dann immer weg serialisieren kann, und später wieder lade.

Abschließend hab ich noch eine Frage zu deinem verwendeten ThreadPool. Ist es nicht schneller, wenn ein Thread schon existiert der nur angehalten ist, als das man jedesmal erst einen Thread anfordern muss?

Zitat von gfoidl
die SyncQueue<T> selbst läuft nirgends denn sie liegt auf dem Heap ;-)
Danke noch für die Erklärung. Das hat dann mein Knoten im Kopf gelöst :)

Grüße Stephan

Thema: [gelöst] Brauche kleinen Denkanstoss bei einer überwachten Queue und Threading
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo zusammen,

eine kleine Frage hab ich noch, bezüglich der Zugehörigkeit der SyncQueue in der Klasse.

Folgenden Code verwende ich ( stark gekürzt ):


        internal class Watcher
        {
            private Thread _thread;
            private SyncQueue<MyObjectClass> _syncQueue;

            public Watcher()
            {
                _syncQueue = new SyncQueue<MyObjectClass>();
                _thread = new Thread(new ThreadStart(SyncQueueThread));
                _thread.Start();
            }

            private void SyncQueueThread()
            {
                while (true)
                {
                    MyObjectClass myObject = _syncQueue.Dequeue();
                    MyMail mail = new MyMail();
                    mail.Send(myObject);
                }
            }

            private void MethodeAdd()
            {
               MyObjectClass newMyObject = new MyObjectClass("Value1", Value2");
                _syncQueue.Enqueue(newMyObject);
            }
        }
Die Klasse "Watcher" läuft in dem Thread, der durch den ThreadPool des FileSystemWatcher erstellt wird. Das ist mir klar.
Doch in welchen Thread läuft da nun die SyncQueue<T> ?
Das versteh ich noch nicht ganz, bzw kann das nicht genau zuordnen.
Mich verwirrt dabei ein bisschen, da ich ja das Enqueue der SyncQueue definitiv in dem Thread des Watcher mache, aber das Deqeue dann definitiv wieder in dem Thread für die Emails.

Meine einschätzung ist, das die SyncQueue<T> komplett in dem SyncQueueThread läuft. Ich erkläre mir das damit, das innerhalb der SyncQueue<T> Klasse im Dequeue() der Thread mit Monitor.Wait(this); angehalten wird, und dann in Enqueue() mit Pulse wieder zum leben erweckt wird.
Aber der FileSystemWatcher wird dadurch nicht unterbrochen.


Grüße Stephan

Thema: [gelöst] Brauche kleinen Denkanstoss bei einer überwachten Queue und Threading
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo zusammen,

Zitat von gfoidl
als Hinweis: Die BlockingCollection<T> von .net 4.0 entspricht quasi der SyncQueu<T> von herbivore.

D.h. für beide gelten die selben Überlegungen.
Ich hab beide Klassen mal durchgetestet. Was Du sagst kann ich bestätigen.
Nur kann man den mechanismus dahinter besser verstehen, wobei das ja ansich nicht sonderlich spannend und umfangreich ist.
Zitat von gfoidl
PS: Für das PDF hab ich absichtlich keine Seitennummer angegeben da der ganze Inhalt lesenswert ist ;-)
Ich werde mir die PDF auch noch ausdrucken und mal in ruhe durchlesen. Da es in Englisch ist, wird das dann zwar sicher ein bisschen länger dauern, aber das Thema interessiert mich allemal, da ich jetzt ja selbst einen 4-Kern Phenom habe, mit dem ich das sogar testen kann.
Hatte gestern nämlich schon bemerkt, das wenn ich meiner Anwendung ordentlich was zum kauen gebe, der auch nur 1 Kern richtig auslastet.
Zitat von Programmierhans
Im Event des FSW eine Instanz einer Klasse erstellen... dieser die Informationen des Events übergeben und dann direkt in dieser Klasse einen Thread starten der dann das Mail aufbereitet und verschickt... (Create and forget).
Dein Vorschlag hört sich auch gut an. Hab das nun zwar schon anders gelöst, werde mir die Idee dahinter aber mal merken.

Allgemein hat mir das Thema nun sehr viel gebracht um die thematik mit den Threads besser zu verstehen. Ist eben immer besser, wenn man selbst mal vor dem Problem steht und lösen muss, als wenn man sturr Themen aus Büchern oder sonstigen Quellen nacharbeitet.

Danke nochmal an alle, die mir geholfen haben.

Grüße Stephan

Thema: Hotspot anbieten: Was muss man technisch und rechtlich beachten?
Am im Forum: Smalltalk

Hallo demondriver235,

hier mal ein Link der dich sicher weiter bringen wird.

Grüße Stephan

Thema: [gelöst] Brauche kleinen Denkanstoss bei einer überwachten Queue und Threading
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo herbivore,

dein Ansatz hört sich auch gut an und deine SyncQueue<T> ist ein guter Tip, den ich mir sofort fest ins Gehirn Meisel.

Hab eben einen ersten Test geschrieben, mit der BlockingCollection<T> und einem Thread, der sich um die Emails kümmert.

Im moment bin ich damit ein wenig am testen, aber werde deine Variante sicher auch mal noch durchtesten. Alleine schon um zu sehen, welche Variante eventuell schneller ist, denn die jetzige Implementation hat sehr lange laufzeiten um die Emails zu versenden, welche es aus der BlockingCollection<T> ließt.

Ansonsten scheine ich damit auf dem richtigen Weg zu sein.

Danke euch beiden noch für die guten Infos.

Grüße Stephan

PS: @Gü: Ich muss mir in ruhe mal die PDF durchlesen. Aber scheint eine interessante sache zu sein.

Thema: Joomla auf dem IIS hosten?
Am im Forum: Smalltalk

Zitat
PHP / MySQL und IIS können zum Kotzen sein, überleg dir, was du da tust. :)
Würde mich auch mal interessieren, was du damit meinst.
Bei mir laufen einwandfrei PHP/MySQL auf dem IIS.

Thema: [gelöst] Brauche kleinen Denkanstoss bei einer überwachten Queue und Threading
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Gü,

ja ich nutze NET 4.0. Schaue mir dann mal die Klasse und den Link an. Hört sich zumindest schonmal interessant an.

Grüße Stephan

Thema: [gelöst] Brauche kleinen Denkanstoss bei einer überwachten Queue und Threading
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo zusammen,

ich bräuchte mal einen kleinen Denkanstoss von euch, wie ich das am besten umsetzen sollte.

Folgende funktion muss ich realisieren.
Ich habe einen FileSystemWatcher, der mich per Email über seine Ereignisse informieren soll. Dazu hab ich 2 Lösungsansätze, die ich mir vorstellen kann, das es damit funktioniert.

  1. In der Klasse, in der ich den FileSystemWatcher instanziere und auf sein Überwachungspfad und Filter konfiguriere, gibt es eine Queue<T> in der der FileSystemWatcher seine Ereignisse schreiben kann.
    Ein Thread überwacht dann die Queue<T> und holt daraus dann die Daten um damit eine Email zu generieren. Threading und Queue<T> deshalb, da sonst der FileSystemWatcher ja blockiert in der Zeit, wo die Email versendet wird, und dadurch dann FileSystem Ereignisse verloren gehen könnten.
  2. Der FileSytemWatcher selbst ist in einem eigenen Thread ausgelagert und meine Klasse hat die Queue<T>. Der Thread mit dem FileSystemWatcher schreibt dann in die Queue seine Ereignisse und der Hauptthread ( also meine Klasse selbst ) überwacht dann wieder die Queue und sendet die Emails.
  3. Welches der beiden möglichkeiten, würdet Ihr implementieren?
    Oder hättet Ihr noch eine total andere Lösungsidee, wie man das umsetzt?

    Bin mal über eure Meinungen gespannt. Kenne die Queue<T> noch nicht so gut, und in Threads bin ich auch noch nicht ganz so standfest, als das ich dass jetzt so direkt entscheiden vermag, welche meiner beiden Ideen die bessere lösung ist.

    Abschließend, würden mich dann noch ein paar Fallen interessieren, die mir da begegnen werden, womit ich jetzt schon rechne, das ich in irgendeine davon dann fallen werde.

    Danke euch schonmal.

    Grüße Stephan

Thema: Socket: Als Client verbinden sobald der Host vorhanden ist.
Am im Forum: Netzwerktechnologien

Hier mal mein Vorschlag:

Verwende Timer statt Thread.Sleep().
In dem Timer kannst Du dann einstellen, das er nach X Zeit die Polling-Methode wieder startet. Setze dann den Timer zurück und lege den schlafen.
Wenn dann innerhalb der Methode die SocketException geworfen wird, startest Du den Timer wieder. So kann das Spiel dann die ganze Zeit gehen, bis Du von außen den Timer dauerhaft deaktivierst, oder X-Anzahl falsche Versuche protokolliert hast.

Thema: Joomla auf dem IIS hosten?
Am im Forum: Smalltalk

Hallo #coder#,

lass alle spielereien mit XAMPP oder so weg.
Sehe keine probleme, warum Jomla nicht auf dem IIS laufen sollte.

Zitat
Joomla! benötigt: Mindestanforderung

einen installierten und funktionierenden Webserver, z.B. Apache ab Version 1.13.19 oder Microsoft IIS.

die Skriptsprache PHP ab Version PHP 4.3. Die Unterstützung für MySQL und Zlib muss in PHP einkompiliert sein. Zlib ist eine Bibliothek, die es PHP ermöglicht, Dateipakete zu lesen, die mit dem ZIP-Verfahren komprimiert wurden.

das Datenbanksystem MySQL ab Version 3.23.x, bei Unicode-Zeichensätzen MySQL ab 4.1.x.

Thema: Net.Remoting Verbindungsstatus herausfinden
Am im Forum: Netzwerktechnologien

Hallo Rainbird,

Das ist mal eine klare ansage, das es so nicht gehen wird. Okay, dann muss ich mich wohl von meinem Gedanken verabschieden.

Zitat
Geht es Dir bei der IsConnected-Geschichte um Fehlerbehandlung?
Konkret ging es mir darum, das ich Clientseitig mich ja mit dem Server verbinde.
Nachdem ich mich dann verbunden habe, hängt sich der Client an diverse Events ran, was aber ja nicht geht, wenn der Client nicht mit dem Server verbunden ist (SocketException war das meine ich).
Somit wollte ich dann in der Methode erst testen, ob sich der Client erfolgreich mit dem Server verbinden konnte und eine Variable setzen, die den status merkt.
Das selbe dann wenn der Client beendet wird. Dort wollte ich dann nachsehen, ob der Client verbunden ist und die Events deregistrieren.

Aber gut, ich kann das ja auch über Exception behandeln.

Grüße Stephan

Thema: [SQL Compact] Seltsames verhalten
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: Sql Server Compact 3.5 / NET 4.0

Hallo zusammen,

ich stelle eben ein seltsames verhalten beim SQL Server Compact festgestellt, was ich mir nicht recht erklären kann.

Ich Programmiere gerade an einem FileWatcher-Dienst, der via NET.Remoting seine Daten von einem WPF Client bekommt.
Der Dienst schreibt die Daten dann in die Datenbank und ließt die nach verlangen vom Client dann auch wieder aus und liefert die an den Client zurück.
Das nur mal als Grundlage, der Application.

Folgendes stelle ich fest:
Ich schreibe über das Remote Object einen Eintrag in die Datenbank und feuer danach ein Event, welches den Client dann wieder veranlässt die neuen Daten aus der Datenbank zu holen.
Das funktioniert auch einwandfrei. Bloß, wenn ich nachdem ich im Client den Eintrag erstellt habe ( zum Remote Server gesendet ), sofort den Client und die Server Instanz schließe, werden die Daten in der Datenbank nicht dauerhaft gespeichert.
Das ganze passiert so innerhalb der ersten 10 secunden, nachdem ich den neuen Eintrag der Datenbank hinzugefügt hatte.
Der Client ließt aber korrekt die Daten aus der Datenbank heraus und zeigt den neuen Eintrag auch an ( Event wurde gefeuert ).

Hier pack ich mal noch die beiden Methoden rein, die dafür zuständig sind, die Daten aus der Datenbank zu lesen und zu schreíben:


        public ObservableCollection<IWatchDetail> GetWatchDetailCollection()
        {
            ObservableCollection<IWatchDetail> watchDetailCollection = new ObservableCollection<IWatchDetail>();
            using (SqlCeCommand cmd = OpenConnection(ConnectionString).CreateCommand())
            {                
                cmd.CommandText = "SELECT Id, Name, Description, Path, Filter, IncludeSubDirectories, IsEnabled, SendEmail, Subject, ToEmail, ToName FROM WatchDetail";
                
                SqlCeDataReader rdr = cmd.ExecuteReader();
                                
                while (rdr.Read())
                {
                    IWatchDetail watchDetail = new WatchDetail();
                    watchDetail.Header = rdr["name"].ToString();
                    watchDetail.Description = rdr["Description"].ToString();
                    watchDetail.Filter = rdr["Filter"].ToString();
                    watchDetail.IncludeSubDirectories = (bool)rdr["IncludeSubDirectories"];
                    watchDetail.IsEnabled = (bool)rdr["IsEnabled"];
                    watchDetail.Path = rdr["Path"].ToString();
                    watchDetail.SendEmail = (bool)rdr["SendEmail"];
                    watchDetail.Subject = rdr["Subject"].ToString();
                    watchDetail.ToEmail = rdr["ToEmail"].ToString();
                    watchDetail.ToName = rdr["ToName"].ToString();

                    watchDetailCollection.Add(watchDetail);
                }

            }
            return watchDetailCollection;
        }

        public Int32 WriteWatchDetail(IWatchDetail watchDetail)
        {
            string insertString = "INSERT INTO WatchDetail" +
                "(Name, Description, Path, Filter, IncludeSubDirectories, IsEnabled, SendEmail, Subject, ToEmail, ToName)" +
                " VALUES" +
                "(@Name, @Description, @Path, @Filter, @IncludeSubDirectories, @IsEnabled, @SendEmail, @Subject, @ToEmail, @ToName)";
        
            using (SqlCeCommand cmd = OpenConnection(ConnectionString).CreateCommand())
            {
                cmd.CommandText = insertString;

                cmd.Parameters.Add("@Name", SqlDbType.NVarChar, 100).Value = watchDetail.Header;
                cmd.Parameters.Add("@Description", SqlDbType.NVarChar, 255).Value = watchDetail.Description;
                cmd.Parameters.Add("@Path", SqlDbType.NVarChar, 255).Value = watchDetail.Path;
                cmd.Parameters.Add("@Filter", SqlDbType.NVarChar, 100).Value = watchDetail.Filter;
                cmd.Parameters.Add("@IncludeSubDirectories", SqlDbType.Bit).Value = watchDetail.IncludeSubDirectories;
                cmd.Parameters.Add("@IsEnabled", SqlDbType.Bit).Value = watchDetail.IsEnabled;
                cmd.Parameters.Add("@SendEmail", SqlDbType.Bit).Value = watchDetail.SendEmail;
                cmd.Parameters.Add("@Subject", SqlDbType.NVarChar, 100).Value = watchDetail.Subject;
                cmd.Parameters.Add("@ToEmail", SqlDbType.NVarChar, 100).Value = watchDetail.ToEmail;
                cmd.Parameters.Add("@ToName", SqlDbType.NVarChar, 100).Value = watchDetail.ToName;
                
                return cmd.ExecuteNonQuery();
            

Nun meine Frage, die ich habe:
Kann es sein, das die Datenbank Datei gecached ist, und dadurch dann ein bisschen länger braucht, bis die Daten zurück geschrieben werden in die Datei?

Ist mein erstes Projekt, das ich mit der Compact Datenbank mache. Fand da eine SQL Server Instanz zu installieren etwas übertrieben.

Grüße Stephan

Thema: Net.Remoting Verbindungsstatus herausfinden
Am im Forum: Netzwerktechnologien

Hallo Rainbird,

Zitat
Warum ist der Verbindungsstatus so wichtig für Dich?
Sinn ist, wenn sich ein Client über obige Methode mit dem Server vebindet, herauszufinden, ob eine verbindung zustandegekommen ist und dann eine Variable gesetzt wird, diese man dann mit IsConnected abfragen kann.

Werde mir die beiden möglichkeiten von dir mal ansehen.

Grüße Stephan

Thema: Net.Remoting Verbindungsstatus herausfinden
Am im Forum: Netzwerktechnologien

Hallo zusammen,

ich suche derzeit, wie ich in Net.Remoting den Verbindungsstatus heraus bekommen kann.

ich verbinde mich mit folgender Methode zu dem Server. Nur liefert die Methode immer die Instanz zurück, selbst wenn keine Verbindung zum Server besteht.

public object Connect(string remoteName, Type remoteObjectType, IPEndPoint remoteEndPoint)
        {
            /* check arguments */
            if (remoteName == null) throw new ArgumentNullException("remoteName");
            if (remoteObjectType == null) throw new ArgumentNullException("remoteObjectType");
            if (remoteEndPoint == null) throw new ArgumentNullException("remoteEndPoint");

            /* check contraints */
            if (remoteEndPoint.AddressFamily != AddressFamily.InterNetwork) throw new ArgumentException("The address family of remoteEndPoint must be of type internetwork (ipv4)");

            string hostUrl = "tcp://" + remoteEndPoint.ToString() + "/" + remoteName;

            BinaryServerFormatterSinkProvider serverSinkProvider = new BinaryServerFormatterSinkProvider();
            serverSinkProvider.TypeFilterLevel = TypeFilterLevel.Full;

            BinaryClientFormatterSinkProvider clientSinkProvider = new BinaryClientFormatterSinkProvider();

            Hashtable channelProperties = new Hashtable();
            channelProperties["name"] = remoteName + ":" + Guid.NewGuid().ToString("D", CultureInfo.InvariantCulture);
            channelProperties["port"] = 0;

            TcpChannel channel = new TcpChannel(channelProperties, clientSinkProvider, serverSinkProvider);

            /* boot instance */
            object instance = Activator.GetObject(remoteObjectType, hostUrl);
            
            ChannelServices.RegisterChannel(channel, false);
            
            /* everything ok, add channel */
            lock (_channels)
            {
                if (!_channels.ContainsKey(remoteName))
                {
                    _channels.Add(remoteName, channel);
                }
            }
            return instance;
        }

Okay, wenn man dann die Methoden der Instanz aufruft, bekommt man eine Exception, die man dann fangen und behandeln kann.
Aber gibt es keine möglichkeit, den Verbindungsstatus schon in der Connect()-Methode zu prüfen, das die Methode ggf ein NULL oder eine Exception zurück geben kann?

Grüße Stephan

Thema: Werbung im Forum
Am im Forum: Wünsche und Kritik

Hallo herbivore,

Zitat
PS: Noch ein Wort zum Verwendungszweck der Spenden. Du schreibst "5 Euro finde ich echt billig, für die Hilfe die man hier immer bekommt". Man muss da sauber trennen: Die Hilfe kommt von der Community, wogegen deine 5 Euro an den Betreiber gehen sollen (wobei man nicht verschweigen darf, dass JAck30lena nicht nur der Betreiber ist, sondern auch eins der aktivsten Community-Mitglieder). JAck30lena würde das Geld ohne Zweifel verdient erhalten. Alleine, dass er den Kopf für das, was wir hier treiben, hinhält, ist kaum mit Geld aufzuwiegen. Trotzdem muss man klarstellen, dass deine 5 Euro nicht für die Hilfe wären (die kommt von der Community), sondern für die Bereitstellung der Plattform (die kommt vom Betreiber).
Dies möchte ich vollen Umfang unterstreichen. Es geht rein um die Bereitstellung der Community Plattform, und nicht um eine erwartung einer Sonderbehandlung durch eine Spende an den Betreiber.
Zitat
Panik zu verbreiten, ist also nicht angebracht. Woher die Befürchtung kommt, dass es übertrieben werden könnte, verstehe ich nicht. Schon in Betreiberwechsel VizOne --> JAck30lena steht zu lesen, dass JAck30lena myCSharp.de im Geist und im Sinne des bisher gelebten Community-Gedanken weiterführen wird. Es besteht kein Grund daran zu zweifeln. Auch unter VizOne gab es im gleichen Umfang Werbung. Sie war lediglich eine zeitlang entfernt, weil die entsprechenden Verträge ausgelaufen waren.
Ich will damit keine Panik bereiten. Und den "wollen mir mal aufruf nenen" zu der freiwilligen Spende, empfinde ich persönlich, als mein einsatz in der Community, die mir viel bringt, ich selbst aber noch bescheiden wenig zu den fragen beitragen kann ( fehlen an Detail Wissen, oder die fragen wurden schon im laufe eines tages beantwortet ).

Ich habe auch den Thread zu dem Betreiberwechsel gelesen. Aber ich kenne auch einige stellen im Internet, an denen auf einmal Werbung schneller gespriesen ist, als nutzbarer Inhalt.

Das möchte ich einfach vermeiden. Wobei ich es ja sehr schön finde, das dies auch eurerseits nicht gewollt ist.

Grüße Stephan

PS: Allenfalls ließen sich mit einem Überschuss, an Gelder in der Kasse, auch andere dinge, wie Treffen damit veranstalten

Thema: Eure Meinung zu Google Streetview?
Am im Forum: Smalltalk

Hallo,

Zitat
Das schnell und einfach die RL-Person samt Abbild des Wohnplatzes mit der digitalen Person verknüpft werden kann. Die Idee gefällt mir nicht. (Z.B.: man nehme ein Mashup zwischen einem beliebigen Online-Telefonbuch, 123people und GSV)
Zitat
Das ist nur ein Beispiel, aber mit GSV ergeben sich nun ähnliche Möglichkeiten für andere Situationen, die meiner meinung nach durchaus Berücksichtigung finden sollten.
Aber diese Möglichkeit ergibt sich nur bei den Personen, die unbedacht Ihre persönlichen Daten usw, in den Sozial Netzwerken oder anderen Quellen, welche die dann zur Erhebung nehmen wollen, hinterlassen.

Wenn man aber mit seinen Daten sauber umgeht, dann wird das für diesen Firmenkreis, die diese Daten aufbereiten wollen, ungleich schwerer.

Um auf das Thema StreetView zu kommen. Ich persönlich finde das nicht schlimm, wenn das Mietshaus in dem ich wohne zu sehen ist. Das selbe wäre auch mit einem Haus, wenn ich eines haben würde.
Denn schlussendlich trete ich meine persönlichen Daten im Internet nicht breit. Bin in keinem dieser Sozial Netzwerken angemeldet, da mich dieses Zeug nicht die Bohne interessiert.
Somit sehe ich keine Gefahr für mich durch StreetView.

Grüße Stephan

Thema: Werbung im Forum
Am im Forum: Wünsche und Kritik

Hallo zusammen,

ich sehe gerade, das im Forum Werbung von Amazon und von Google Ads drinne sind.
Kann verstehen, das dass Forum mit der Werbung finanzieren werden soll, was ich ja weiter nicht schlimm ist.

Nur meine Bitte, übertreibt das bitte nicht. Finde die Seiten im Internet, die immer bis an den letzten möglichen Rand mit Werbung einen erschlagen, störend.

Nun will ich aber auch mal eine alternative aufzeigen und hier einige Mitglieder ansprechen.

Wie können wir das Forum unterstützen? Klar durch Geld, da der Server auch Geld kostet.

Mein Vorschlag:
Wenn jeder, der das Forum in der jetzigen Form liebgewonnen hat, 5 Euro im Monat an den Betreiber überweist ( und 5 Euro finde ich echt billig, für die Hilfe die man hier immer bekommt ), dann kann das Forum in dieser Form ( fast Werbefrei ) bleiben.


Also beteiligt euch auch, dann braucht JAck30lena das Forum nicht mit Werbung zu pflastern um seine Unkosten decken zu können.

Ich für meinen Teil, werde das in dieser Form machen, und sobald ich weiß auf welches Konto ich die 5 Euro im Monat überweisen kann, einen Dauerauftrag erteilen.
Ich erwarte dadurch aber auch keine Sonderbehandlung, sondern rein aus dem selbstzweck, das ich hier immer gute Hilfe bekomme und auch einigen Usern helfen kann.
Außerdem fühle ich mich hier im Forum wohl, was sicher auch durch das nicht vorhandensein von aufdringlicher Werbung ist.

Grüße Stephan

Thema: [gelöst] NET.Remoting ObservableCollection<DataClass> und ItemsSource Binding Problem
Am im Forum: GUI: WPF und XAML

Nabend zusammen,

habe das/die Probleme nun gelöst.

1. Problem mit dem aktualisieren des DataGrid.ItemsSource.
Hier hänge ich mich nun an ein Event, was der Server feuert, wenn ein neuer Eintrag der Datenquelle hinzugefügt wurde. In dem Event setze ich dann die ItemsSource auf NULL und danach lade ich die Daten neu nach.
Ob das nun die beste Methode darstellt, weiß ich nicht.

2. Problem Fehlermeldung Sicherheitsebene.
Prinzipiell konnte ich das mit diesem Blog Eintrag lösen .NET Works: Remote Events mit .NET 2.0: Generische Lösung mit Dispatcher und Adapter.

Das Problem was aber dann ja bestand, das er mir eben obige Fehlermeldung geliefert hatte. Ich hatte mich da gestern lange im Kreis gedreht und manche Blog Posts etc versucht, hatte aber immer den selben erfolg -> Exception wie oben.

Irgendwann ist mir eine kleinigkeit aufgefallen bei dem MiniChat Beispiel. Nämlich folgender kleine Code abschnitt:

            /* build channel and sink providers */
            BinaryServerFormatterSinkProvider serverSinkProvider = new BinaryServerFormatterSinkProvider();
            serverSinkProvider.TypeFilterLevel = TypeFilterLevel.Full;

            BinaryClientFormatterSinkProvider clientSinkProvider = new BinaryClientFormatterSinkProvider();

            Hashtable channelProperties = new Hashtable();
            channelProperties["port"] = remoteEndPoint.Port;

            /* boot channel */
            TcpChannel channel = new TcpChannel(channelProperties, clientSinkProvider, serverSinkProvider);

Durch das hinzufügen der BinaryServerFormatterSinkProvider und BinaryClientFormatterSinkProvider im Server und im Client konnte ich die Fehlermeldung beheben.

Warum das damit genau zusammengehangen ist, konnte ich bis jetzt noch nicht herausfinden, denn die MSDN schweigt sich da ein wenig aus, oder ich interpretiere das falsch.

Auf jedenfall konnte ich soweit meine Probleme lösen. Danke noch an alle.

Grüße Stephan

Thema: [gelöst] NET.Remoting ObservableCollection<DataClass> und ItemsSource Binding Problem
Am im Forum: GUI: WPF und XAML

Hallo zusammen,

ich dreh mich gerade irgendwie im Kreis.
Habe mir nun den Artikel durchgelesen, was Talla verlinkt hat und da entschieden, das mir Variante 2 reichen würde.

Nachdem ich das nun implementiert habe, bekomme ich beim hinzufügen des Client an den Server eine Exception:

Zitat
Der Typ System.Runtime.Remoting.ObjRef und die davon abgeleiteten Typen (z.B. System.Runtime.Remoting.ObjRef) dürfen in dieser Sicherheitsebene nicht deserialisiert werden.

Ich habe mir eine Klasse Server und Client geschrieben, jeweils mit einem Interface, wie im Beispiel auch.
Die Server Klasse instanziere ich dann in einer Konsolenanwendung zum testen.
Bei der Client Klasse hole ich mir dann in dem WPF -Window die Singleton Instanz der Client Klasse und rufe darin dann Connect() auf ( das ist der einzige Unterschied, den ich gemacht habe ).

Die beiden Klassen und die Interfaces habe ich in einer eigenen Assembly ausgelagert, die ich dann in der Konsole und der WPF Anwendung referenziere.

Hier noch ein bisschen Code:


    public interface IFileWatcherServer
    {
        // Einen Client hinzufügen
        void AttachClient(IFileWatcherClient client);

        // Einen Client entfernen
        void DetachClient(IFileWatcherClient client);
    }

    class FileWatcherServer : MarshalByRefObject, IFileWatcherServer
    {
        private Hashtable _clients = new Hashtable();
        
        public FileWatcherServer()
        {
            
        }
       
        public void AttachClient(IFileWatcherClient client)
        {
            if (client == null)
                return;

            lock (_clients)
            {
                _clients[RemotingServices.GetObjectUri((MarshalByRefObject)client)] = client;
                Console.WriteLine("Client \"{0}\" hinzugefügt", client);
            }
        }

        public void DetachClient(IFileWatcherClient client)
        {
            if (client == null)
                return;

            lock (_clients)
            {
                _clients.Remove(client);
                Console.WriteLine("Client \"{0}\" entfernt", client);
            }
        }
    }


    public interface IFileWatcherClient
    {
        void Connect();
    }

    public class FileWatcherClient : MarshalByRefObject, IFileWatcherClient
    {
        private IFileWatcherServer _remoteService;
        public static readonly FileWatcherClient Instance = new FileWatcherClient();

        private FileWatcherClient()
        {
                       
        }

        public void Connect()
        {
            TcpChannel channel = new TcpChannel(0);
            ChannelServices.RegisterChannel(channel, false);
            _remoteService = (IFileWatcherServer)Activator.GetObject(typeof(IFileWatcherServer), "tcp://localhost:9898/FileWatcherRemote/Service");
            _remoteService.AttachClient(FileWatcherClient.Instance); // Hier kommt die Exception
        }
    }
Hat jemand noch eine Idee?

Grüße Stephan

Thema: Settings in Registry speichern
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Zitat
Desweiteren würde mich mal interessieren, warum die Verwendung des Konfigurationsmodells besser ist, als die Verwendung der Registry?
Da kann ich Dir auch noch ein Beispiel liefern. In einer Domain ( Active Directory ) Verwalteten Umgebung, wo die User Daten zentral auf dem Server gespeichert werden, hast Du das riesen Problem, das Du bei einem Wechsel des Rechner und einem Anmelden an der Domain nicht mehr die selben Settings haben wirst.

Wenn die Settings aber nach dem Konfigurationsmodell gespeichert wurden, interessiert es nicht, an welchem Rechner Du dich anmelden wirst, denn die Settings sind dann ja im User Verzeichnis zentral auf dem Server gespeichert und werden dort geladen.

Außerdem ist das Konfigurationsmodell einfacher zu verwenden als die Registry.
Ich hatte noch nie das bedürfnis Settings in der Registry zu speichern, seitdem ich das Konfigurationsmodell kenne.

Grüße Stephan

Thema: [gelöst] NET.Remoting ObservableCollection<DataClass> und ItemsSource Binding Problem
Am im Forum: GUI: WPF und XAML

Hallo Talla,

ich schätze mal in einem dieser Stricke hänge ich gerade.
Lese mir den Link von Dir mal durch. Wenn ich aber deine Kommentare so durchlese, sehe ich schon, das ich wohl einen anderen Weg gehen muss.

Grüße Stephan

Thema: [gelöst] NET.Remoting ObservableCollection<DataClass> und ItemsSource Binding Problem
Am im Forum: GUI: WPF und XAML

Hallo zero_x,

ich denke, Du hast mich falsch verstanden.
Füge mal ein wenig Code ein, wie ich das mache:


        public FileWatcherRemote()
        {
            _watchDetailList = new ObservableCollection<WatchDetail>();
            _watchDetailList.CollectionChanged += new NotifyCollectionChangedEventHandler(_watchDetailList_CollectionChanged);
           
           // Hier hab ich dann mal noch statisch ein paar Daten eingefügt, das ich die Funtion testen kann.
           // Das abbilden der Daten in die Datenbank kommt dann noch hinzu, soll aber zu diesem Problem nicht gehören.
        }

        void _watchDetailList_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
        {
            
        }

        public ObservableCollection<WatchDetail> DetailCollect
        {
            get
            {
                return _watchDetailList;
            }
            set
            {
                throw new NotImplementedException();
            }
        }

        public void AddWatchDetail(WatchDetail watchDetail)
        {
            _watchDetailList.Add(watchDetail);
            // Hier sollen dann die Daten noch in die DB geschrieben werden und der Windows Dienst zum einlesen angeregt werden.
        }


// Bindung an das DataGrid
DataGridWatcherItems.ItemsSource = remoteService.DetailCollect;

// Und ein neues DataObject an den Service schicken
remoteService.AddWatchDetail(new WatchDetail("Meine Details"));

Wie gesagt, er aktualisiert mir das DataGrid im WPF Client dann nicht, wenn ich das Item der ObservableCollection<WatchDetail> hinzugefügt habe.

Grüße Stephan

Thema: [gelöst] NET.Remoting ObservableCollection<DataClass> und ItemsSource Binding Problem
Am im Forum: GUI: WPF und XAML

Hallo zusammen,

folgende Situation möchte ich lösen. Ich habe einen Windows Dienst, der durch einen WPF Client Daten erhalten soll und auch ausgelesen werden soll.
Soweit sollte das ja kein Problem sein.

Nun hab ich aber ein Problem bei folgendem, was ich realisieren möchte.
In meinem Remoting Object, erstelle ich eine ObservableCollection<DataClass> und lasse die dann mit Daten aus der Datenbank füllen.
Diese Collection reiche ich dann durch einen Property aus dem RemoteObject nach außen in mein WPF Programm. Dort binde ich dann die Collection an das DataGrid.ItemsSource Object.

Soweit funktioniert das schon mal.

Um neue Daten zu erfassen, erstelle ich eine Instanz meiner DataClass im WPF Client und übergebe diese dann an das RemoteObject. Im RemoteObject, füge ich die neuen Daten dann der ObservableCollection<DataClass> hinzu durch Add().
Auch das funktioniert einwandfrei.

Nun aber zu dem Problem.
Wenn ich neue Daten der Collection hinzufüge, wird mein DataGrid nicht aktualiesiert. Habe testweise schon mal den Client neu gestartet, und den Server laufen gelassen. Wenn ich den Client neu gestartet habe, wird der neue Eintrag auch im DataGrid angezeigt.

Ich schätze mal, das mein Ansatz da total falsch ist. Aber im Moment hab ich keine Ahnung wie ich das anders lösen soll.

Habt Ihr mir da ein paar stichworte, wie ich das mit NET.Remoting lösen kann?

Grüße Stephan

Thema: [gelöst] VS2010: Debugger markiert bei einer unbehandelten Exception die Codestelle nicht mehr
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo zusammen,

also den Fehler beheben konnte ich so nicht. Nachdem ich meinen Rechner nocheinmal neu Installiert habe, ist das nun wieder alles in Ordnung.
Das Installieren des kompletten Rechner geht dank einem Server und einer Domain in knappen 2 Stunden :)

Ich hab noch ein bisschen überlegt, was ich beim letzten Installieren in welcher reihenfolge getan habe. Mir ist dann aufgefallen, das ich Expression Studio vor Visual Studio installiert hatte. Möglich wäre, das dabei dann irgendwas kaputt gegangen ist, und der Debugger dadurch falsch läuft.
Heute bin ich dann bei gegangen und habe als erstes Visual Studio und danach dann die restlichen Tools und Expression installiert.

Sollte noch jemand, das selbe Problem haben, und das bestätigen können, dann würde das sicher eine gute Info an MS sein :)

Grüße Stephan

Thema: Suche Aufnahmeprogramm (Desktop Recording Programm)
Am im Forum: Smalltalk

Zitat
Und die Expressions-Suite ist zwar nicht kostenlos, aber zumindest über das MSDNAA-Programm als auch über DreamSpark erhätlich.
Die Expression-Suite ist aber auch nicht so teuer, wenn man eine Linzenz von Visual Studio hat. Dann kann man sich das Upgrade kaufen.
Hab mir den Encoder dort auch schon mal angesehen und der scheint mir brauchbares Filmmaterial zu erstellen.

Thema: Suche Tool um in Dateien nach einem bestimmten Begriff zu suchen
Am im Forum: Smalltalk

Zitat von CSL
Im TC ist das ein Basisfeature
Mit TC meinst Du sicher TeamCity. Meine frage bezog sich aber nicht auf ein Tool, das ich damit Source durchsuchen kann, sondern rein in Textdateien auf zB einem FileServer oder sowas.

Grüße Stephan

Thema: [gelöst] VS2010: Debugger markiert bei einer unbehandelten Exception die Codestelle nicht mehr
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo Gü,

ja das selbe. Hatte ich vorhin auch schon versucht.

Grüße Stephan

Thema: [gelöst] VS2010: Debugger markiert bei einer unbehandelten Exception die Codestelle nicht mehr
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo zusammen,

hab ein seltsames Problem mit dem Debugger des VS 2010 Prof.
Habe am Wochenende meinen Rechner neu installiert, da ich neue Hardware verbaut hatte, und dann VS und Tools neu installiert. Windows 7 Prof 64bit, so am rande noch erwähnt, wobei sich da nichts geändert hat.

Nun hab ich das Problem, das mir der Debugger bei einer unbehandelten Exception die Codestelle nicht mehr markiert, sondern meine Anwendung komplett schließt.

Unter dem Menüpunkt "Debuggen -> Ausnahmen" ist bei "Ausgelöst" keine CheckBox markiert. Vom Benutzercode unbehandelt sind alle ausgegraut (aber markiert), bis auf Common Language Runtime Exception, welches aber auch markiert ist. Hab auch schon mal Alle zurücksetzen gesagt, was auch keine besserung bringt.

Wobei ich dort noch nie etwas verändert hatte. Hab nur am Wochenende mich wieder am Windows Server in der Domäne angemeldet, wo ja meine ganzen Daten vorhanden sind. Natürlich dann auch die Settings Daten von VS2010 im Eigene Dateien Verzeichnis, welche VS dann ja weiter nutzt.

Bin etwas Ratlos, woran das noch liegen kann, denn vorher hatte das immer einwandfrei funktioniert.

Bin über jeden Tip dankbar.

Grüße Stephan

Thema: Suche Tool um in Dateien nach einem bestimmten Begriff zu suchen
Am im Forum: Smalltalk

Hallo zusammen,

hab natürlich selbst noch ein bisschen nach einem Tool gesucht.
Folgendes fand ich jetzt schon mal garnicht schlecht aborange Searcher.

@Jack30lena,
dann hab ich das wohl übersehen, wie das geht ;)

@FZelle,
grep kenne ich von Linux. Aber so richtig hab ich das noch nicht gebraucht, daher kann ich mit der Syntax nur bedingt effektiv umgehen. Aber mächtig ist es auf jedenfall, wenn man grep beherscht.

Grüße Stephan