Laden...

Forenbeiträge von ThomasE. Ingesamt 461 Beiträge

06.12.2013 - 08:18 Uhr

Tut mir leid, hatte bisher sowas in der Art noch nicht benötigt. Sieh dir mal die Links von MrSparkle an.

Im Grunde wäre das für meine Seite ein zu großer Zeitaufwand sowas durchzusetzen, da bliebe ich eher beim Original, Rechteck mit Transparenz...

04.12.2013 - 15:45 Uhr

Jedes Control braucht ein oder mehrere Windows-Handles... diese sind beschränkt... und wenn alle verbraucht sind, dann läuft auf dem Rechner genau gar nichts mehr (nicht mal mehr eine Fehlermeldung... da diese auch ein Handle brauchen würde)... In diese Situation willst Du sicher nicht reintreten...

Also bis jetzt war ich noch nie in dieser Situation, selbst mit so vielen Controls..

Mal sehen, vielleicht wirds ja noch was 😃

04.12.2013 - 09:09 Uhr

Die können doch gar nicht alle gleichzeitig in einem Fenster sichtbar sein, oder? Dann sollte man auch nur die gerade sichtbaren Controls zeichnen lassen.

Dieses mußt du mir erklären, wie genau du das machen würdest ?
Das Erste was mir dazu einfiel, wäre alle nicht Sichtbaren Elemente den Visible-Status zu ändern.
Das Zweite wäre, im OnPaint eines Controls zu verhindern das es gezeichnet werden soll.

Solche pauschalen Aussagen würde ich nicht so stehen lassen. WPF ist moderner und verwendet tatsächlich DirectX statt GDI(+) zum rendern, aber das heißt noch lange nicht, daß Controls wesentlich performanter dargestellt werden können. Auch bei WPF ist man gut beraten, nicht gleichzeitig hunderte von Controls darstellen zu lassen.

Stimmt, tut mir leid, falsch ausgedrückt und mich zu wenig zurückerinnert. DirectX wird immer verwendet, nur werden automatisch je nach Gebrauch und DirectX Version, verschiedene Rendering-Ebenen verwendet :



Renderingebene 0 = 
                             (null) Keine Grafikhardwarebeschleunigung. Alle Grafikfeatures verwenden die Softwarebeschleunigung. Die DirectX-Versionsebene liegt in einer niedrigeren Version als 9.0 vor

Renderingebene 1 =
                             Einige Grafikfeatures verwenden die Grafikhardwarebeschleunigung. Die DirectX-Versionsebene beträgt mindestens Version 9.0
                
Renderingebene 2 = 
                             Die meisten Grafikfeatures verwenden die Grafikhardwarebeschleunigung. Die DirectX-Versionsebene beträgt mindestens Version 9.0


Wenn man normale Controls verwendet, kann es auch hier, nur wesentlich später als bei WinForms zu Performance-Problemen kommen.
In einem anderen großen Projekt von mir, werden unter WPF Firmen-Workflows abgebildet, nur machte ich dies nicht direkt mit Controls, sondern verwende eigene Klassen, die von FrameworkElement abgeleitet sind und zeichne alle benötigten Elemente mit DrawingVisual.

Mit dieser Methode funktioniert es, selbst bei einem 10000x10000 großen Canvas, recht performant.

03.12.2013 - 16:47 Uhr

Also ich habe gerade ein Winforms Projekt in Arbeit, welches auch sehr dynamisch mit Controls handeln muß. Die Performance bei WinForms ist nicht wirklich gut geeignet für sowas.

Meine Aufgabe war/ist es, dynamisch eine GUI in einem fertigen System erstellen zu können und an bestimmte Datenfelder im Hintergrund zu binden. Hierbei hab ich einen Control-Editor geschrieben, mit dem man UserControls in xml-Format erstellen kann.

Auch hier können bestimmte UserControls, 100 male als Positionen vorkommen.

Es funktioniert alles tadellos, nur die Performance ist doch etwas mies für sowas.

Unter WPF ist es wesentlich besser, weil ja automatisch, je nach Leistungsanspruch, DirectX Unterstützung verwendet wird, soweit ich das verstanden habe.
Außerdem hat man vom Grafischen her viel mehr Möglichkeiten.

03.12.2013 - 16:34 Uhr

Ich bin mir ehrlich gesagt auch nicht sicher ob das dann so schön aussieht..

Außerdem kann das kompliziert werden, wenn es Elemente gibt die auch die Farbe schwarz besitzen aber nicht angezeigt werden dürfen, dann stehst du wieder am Anfang..

29.11.2013 - 22:42 Uhr

Ich muß gestehen ich versteh ihm auch nicht.

Das ist doch das optimale, trenne Visuelles mit Code, der Oberfläche sollte es egal sein was dahinter passiert, im Großen und Ganzen...

29.11.2013 - 09:50 Uhr

👍 👍 👍 👍

VIELEN DANK FÜR EURE HILFE ! Hab den Fehler endlich erkannt und korregiert !

Hier mein Bericht zur Info auch für Andere:

Fiddler ist wirklich ein sehr hilfreiches Tool in solchen Fällen ! Danke nochmal.

Mein Fehler, den ich mir in Zukunft sicher merken werde:> Fehlermeldung:

System.InvalidOperationException: Beim Serialisieren eines Objekts vom Typ <Namespace+Klasse> wurde ein zirkulärer Verweis gefunden.

Was bedeuted, man besitzt zwei oder mehrere Klassen, die sich gegeseitig referenzieren:


        public class RIAWriteOption
        {
            public RIAWriteOption()
            {
                PropertyGuid = String.Empty;
                RIAOptions = new List<RIAOption>();
                DocumentTypProperty = null;
            }
            
            public string PropertyGuid { get; set; }
            
            public List<RIAOption> RIAOptions { get; set; }

        }
        
        public class RIAOption
        {
            public RIAOption()
            {
                ID = 0;
                Text = String.Empty;
                ImageUri = String.Empty;
                OptionalText = String.Empty;
                CommentMustBeWritten = false;
            }
            public RIAOption(uint id/*, RIAWriteOption parentWriteOption*/)
            {
                ID = id;
                ParentWriteOption = parentWriteOption;
                Text = String.Empty;
                ImageUri = String.Empty;
                OptionalText = String.Empty;
                CommentMustBeWritten = false;
            }
           
            public uint ID { get; private set; }
            
            public string Text { get; set; }
            
            public string ImageUri { get; set; }
            
            public string OptionalText { get; set; }
            
            public bool CommentMustBeWritten { get; set; }
            
            public RIAWriteOption ParentWriteOption { get; private set; }
        }

In diesem Fall hatte ich mit 'ParentWriteOption' auf das Elternteil gezeigt und somit einen zirkulären Verweis geschaffen.

Noch etwas, ganz wichtig, ich hatte zwischendurch immer den Browserverlauf per Hand löschen müssen, weil Herr IExplorer dies, wegen was für einen Grund auch immer, nie komplett geleert hatte.

Dadurch hatte er lokal meine Konfigdatei abgelegt und immer wieder diese falsche Datei geladen und nie die Aktuelle !

Vielen Dank nochmal und schöne Grüße !

28.11.2013 - 20:24 Uhr

Hallo, danke erstmal, werd das morgen mit dem Fiddler machen.

Debuggen ist so eine Sache, das WebService sowie das PlugIn müßte ich Remote-Debuggen, nur bin ich bis jetzt immer gescheitert.

Mache das alles bis jetzt immer mit eigenen Logging, zwar mehr arbeit aber für den Echtbetrieb dann auch praktisch..

28.11.2013 - 17:49 Uhr

Hallo, ich bins wieder 🙂

Normal schreibe ich fast nie in Foren, weil ich sonst immer meine Lösungen für meine Probleme im Internet finden hatte können. Aber hier steh ich nun wirklich an:

Meine Situation:

Ich besitze ein Silverlight PlugIn, welches eine Verbindung zu meinem Webservice besitzt, durch welches es dynamische Daten wieder zurückbekommt. (Kein WCF)
Bis heute gab es keine Probleme, doch nach einer Änderung, geschieht plötzlich folgendes:

1.) Silverlight baut erfolgreich eine Verbindung zum WebService auf
2.) WebService-Log gibt mir die Informationen, daß dieser Aufruf ohne Fehler und erfolgreich abgearbeitet wurde
3.) Silverlight PlugIn gibt mir danach einen Fehler : > Fehlermeldung:

Der Remoteserver hat einen Fehler zurückgegeben: NotFound.

Ich kapier das überhaupt nicht mehr 🤔 alles scheint in Ordnung zu sein, dennoch immer und immer diesen blöden Fehler, der überhaupt nichts aussagt...finde ich

Über den Browser kann ich ohne weiteres mein WebService erreichen, so wie es das Silverlight ja zuerst auch schafft.

Ich hatte es versucht meine Änderungen wieder alle Rückgängig zu machen, als es noch funktionierte, auch der gleiche Fehler.

Die Verbindngsadresse ist zu 100% richtig, hab das schon 10x kontrolliert.

Hatte sogar testweise ein WCF-Service eingebaut, gleicher Fehler.

Hatte dann die dynamische EndPoint-Zuweisung vorübergehend konstant gemacht, damit automatisch der Inhalt von 'ServiceReferences.ClientConfig' verwendet wird. Doch dann sagt mir der Dodel, daß diese Datei nicht im .xap Packet zu finden ist ! Wie das denn auf einmal ? das VS hat es doch selbst eingefügt und ich hatte nichts an dem verändert...
Hat es etwas damit zu tun ? Ich denke nicht...

Bin wirklich verzweifelt, bitte um Hilfe, danke !

Schöne Grüße
Thomas

28.11.2013 - 08:58 Uhr

Nun, nach längerem Suchen, hab ich doch noch was gefunden:

Hier wird die Config.xml vom Server in einem Stream heruntergeladen und kann dann wie gewöhnlich verarbeitet werden.

Danke trotzdem !

Schöne Grüße

26.11.2013 - 10:44 Uhr

Guten Tag und schöne Grüße zu meinem ersten Thema !

Also, es geht hier um eine vorhandene Silverlight-Anwendung, in der ich ein PlugIn scheiben muß.

Dieses PlugIn benötigt eine Verbindung zu meinem WebService und daher die Server beider Anwendungen nicht die gleichen sein müssen, muß ich die Information über die Adresse meine Webservices iregndow ablegen.

Als erstern Versuch, erzeugte ich eine übliche 'Config.xml', in der diese Info enthalten ist. In dieser Datei ist im Visual Studio bei den Eigenschaften bei 'Buildvorgang' automatisch der Eintrag 'Inhalt' gewählt. Ohne den funktioniert es auch nicht, wie ich bemerkt hatte. Die Config-Datei kopierte ich noch in das ClientBin-Verzeichnis.

Nun teste ich das PlugIn direkt aus dem VS heraus, ohne jetzt die Anwendung als PlugIn zu verwenden, funktioniert es, die Datei kann geladen werden und die Informationen werden ausgelesen.

Nur der Test als PlugIn schlägt fehl, weil die Datei nicht gefunden werden kann:> Fehlermeldung:

System.Xml.XmlException: Die Datei '<Dateinamen>' konnte nicht in dem xap-Anwendungspaket gefunden werden.

Ich weiß das Webanwendungen beim Clienten ausgeführt werden und dadurch die Fehlermeldung geworfen wird ?

Ich habe aber keine Möglichkeit an der eigentlichen Silverlight-Anwendung etwas zu verändern. Außer ich komme an dessen 'Web.config' über mein PlugIn, dann würde ich meinen Eintrag einfach dort einfügen... ? Wäre das möglich ?

Vielen Dank,
Thomas