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 Blacal
Thema: XNA wird eingestellt
Am im Forum: Szenenews

Hallo zusammen,

ist schade, dachte mir aber, dass genau sowas kommt. Immer, wenn man zurzeit von Microsoft etwas in Richtung Windows 8 und DirectX liest, ist auch so gut wie immer von C++ die Rede. Scheint für mich fast so, als ob Microsoft hier wieder mehr auf das klassische C++ / DirectX Bundle setzen möchte. Macht ja auch Sinn, da die Hardware von Windows Phone und Tablets im Vergleich zum PC viel schlechter sind und damit C# erst einmal für Spiele auch nicht wirklich sinnvoll sein kann.

Was ich aber empfehle:
Wie weiter oben schon angedeutet wurde, gibt es aktuell jede Menge Entwicklungen in der OpenSource-Welt, die die Lücke von XNA schließen wollen. Hier einige Beispiele:

ANX-Framework - Die nehmen sich vor, die XNA API auf Basis von OpenGL, DirectX 11 usw. nachzuprogrammieren.

SharpDX - In seinem Ursprung ein Thin-Wrapper der DirectX API. Aktuell wird hier aber auch an ein "Toolkit" gearbeitet, welches sich an die XNA-API anlehnen soll. Über diese Library können übrigens auch Spiele für Windows 8 Metro entwickelt werden.

MonoGame - Weiter oben schon erwähnt. Die gehen gezielt den Plattformunabhängigen weg und peilen z. B. auch Android-Geräte an.

Übrigens klappt es auch ganz gut, per C# Windows 8 Store Apps mit 3D-Grafik zu machen. Mosaic Snake 3D ist ein Beispiel direkt von mir, welches C# und SharpDX nutzt, um 3D Sachen auf den Bildschirm zu bekommen. Das läuft auch absolut flüssig auf dem Windows Surface RT Tablet.

Gruß
Roland

Thema: WPF mit MVVM - Frage zu Workerthreads
Am im Forum: GUI: WPF und XAML

Hi daTom,

meines wissens muss man sich schon darum kümmern, dass zum Beispiel PropertyChanged im UI-Thread aufgerufen wird - zumminderst kümmere ich mich immer drum.

Was ich mir aber vortellen kann: WCF und auch andere Technologien verwenden oft standardmäßig schon das aktuelle SynchronizationContext für asynchrone CallBack-aufrufe. Würde also heißen, dass sich das bei dir aufgrund der verwendeten Technologie erledigt hat. Man kann es aber nicht genau sagen, dazu müsste man den Code angucken. Oder du Debugst mal an der Stelle rein, an der die GUI aktualisiert wird bzw. das PropertyChanged aufgerufen wird. Dann siehst du auch, von welchem Thread du da eigentlich kommst.

Gruß
Roland

Thema: WinRT Codesicherheit: Kann der "Quellcode" wie bei .NET angesehen werden? Welche Obfuscatoren gibts?
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Mit Google relativ schnell zu finden:
Babel Obfuscator
EDIT: Soll keine Werbung sein. Kannte den hier bis vor 5 Minuten nicht und es gibt sicherlich auch andere ;)

Wichtig ist auch zu wissen, dass das Gleiche auch für Html/Javascript Apps gilt. Auch hier müsste man den Quellcode obfuscieren.

Gruß
Roland

Thema: WinRT Codesicherheit: Kann der "Quellcode" wie bei .NET angesehen werden? Welche Obfuscatoren gibts?
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hi Kollegen,

schelchte Nachricht an euch:
Man kommt relativ Problemlos ran. Jede WinRT App wird in C:\Program Files\WindowsApps installiert. Zwar hat der Ordner standardmäßig einen anderen Besitzer, den kann man aber umstellen, damit man den Ordner anguken kann. Ist man erst drin, kann man von verwalteten Programmen die Assemblies per ILSpy angucken.

EDIT: Hier noch ein Artikel dazu:
Reverse Engineering and Modifying Windows 8 apps

Gruß
Roland

Thema: Undo/Redo mit MVVM
Am im Forum: GUI: WPF und XAML

Hi,

ich habe jetzt die letzten paar Beiträge nur überflogen, aber noch ein Gedanke von mir:
Bei meinen Programmen hatte ich das Gleiche Problem. Ich hatte mehrere DataGrids und diverse Masken, die jeweils ein einzelnes Objekt bearbeiten. Für das Change-Tracking habe ich dabei nicht die ViewModel- oder Model-Objekte überwacht, sondern die View. Ich habe also Observer-Objekte, welche sich an die Ereignisse von TextBoxen, ComboBoxen, DataGrids usw. hängen können und dafür sorgen, dass für jede Änderung ein entsprechender Command erzeugt wird, welche die Änderung wieder Rückgängig machen kann.

Nachteil an dem Vorgehen ist, dass man in jedem Oberflächen-Control auch das Change-Tracking mit einbauen muss. Vorteil ist, dass man direkt auf die einzelnen Controls und dabei auf die Aktionen des Benutzers eingehen kann. Trackt man das ViewModel oder das Model selbst, so stelle ich mir es schwer vor, die einzelnen Änderungen auch zu Aktionen des Users zuzuordnen, welche ja oft mehrere Änderungen am Model bewirken können.

Achja: Dieses Vorgehen gilt hauptsächlich für alle Eingabeflächen im Programm. Für Buttons o. Ä., welche irgendwas machen, erstelle ich je nach Anforderung ein entsprechendes Command - auch wenn dieses nur aus mehreren Unter-Commands besteht.

Gruß
Roland

Thema: VS 2012: Suche Alternative zu den Setup-Project-Templates
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hi,

ich bin gerade dabei auf WIX umzusteigen (bei einem Projekt schon durch) und habe bis jetzt eigentlich hauptsächlich gute Erfahrungen damit gemacht. Es ist zwar erst mal was anderes, "nur" Xml-Dateien zu editieren, aber man findet stehts schnell die richtigen Einstellungne für das, was man vor hat per Google.

.. hätte übrigens auch noch nicht mitgekommen, dass es nicht stabil wäre.

Gruß
Roland

Thema: Undo/Redo mit MVVM
Am im Forum: GUI: WPF und XAML

Hi,

was hast du da genau für ein Problem?
Was mich auch interessieren würde, wäre, inwieweit du eigentlich Serialisierung verwendest. In meinen Lösungen dafür wäre ich noch nie auf den Gedanken gekommen, überhaupt etwas während des Undo/Redo zu serialisieren oder zu deserialisieren. Bei mir läuft Undo/Redo eigentlich immer über die selben Objekte.

Mit meiner Lösung - wie weiter oben beschrieben - bin ich mitlerweile eigentlich recht zufrieden.

Gruß
Roland

Thema: C#-Scripteditor-Control basierend auf Komponenten von SharpDevelop
Am im Forum: .NET-Komponenten und C#-Snippets

[offtopic]wenn es dir nur darum geht, dann schau dir am besten das LINQPad an. Geht eigentlich genau in die Richtung, einzig die Intellisense ist kostenpflichtig.[/offtopic]

Ansonsten würde ich eine Weiterentwicklung nicht als eigenständiges Snippet-Tool sehen, sondern als ScriptEditor, den man direkt in sein eigenes Programm integrieren kann. So in die Richtung von VBA oder sowas..

Gruß
Roland

Thema: C#-Scripteditor-Control basierend auf Komponenten von SharpDevelop
Am im Forum: .NET-Komponenten und C#-Snippets

Hi urk0n,

wär ne Idee, das Teil noch etwas auszubauen.
So wie es jetzt ist war es eigntlich nur zum Experimentieren gedacht. In der Arbeit haben wir sowas ähnliches gemacht, nur auf Basis der alten SharpDevelop-Libraries. Das hier in diesem Post basiert zu 100% auf WPF (daher bringt auch Application.EnableVisualStyles() nichts). Mal ungeachtet der fehlenden Features ist diese Komponente hier als Vorlage für jeden zu sehen, der auch so etwas ähnliches nachbauen möchte.

Abgesehen der von dir genannten Punkte gibt es noch ne ganze Latte, die man machen könnte. Z. B.

  • Icons für die Elemente innerhalb der Intellisense ;)
  • Laden, Speichern, ... (das ganze Zeugs halt)
  • Anzeige von Compilerfehler und -Warnungen
  • Ein vernünftiger Assembly-Dialog zum hinzufügen von neuen Abhängigkeiten
  • Suchen und Ersetzen wie von jogibear9988 vorgeschlagen (super Hinweis übrigens!)
  • Und und und...

Aber so viel Zeit wollt ich darin erst mal noch nicht rein stecken. Bestünde da konkretes Interesse?

Gruß
Roland

Thema: C#-Scripteditor-Control basierend auf Komponenten von SharpDevelop
Am im Forum: .NET-Komponenten und C#-Snippets

Hi urk0n,

habe das Problem gerade gefixt, die Links oben enthalten jetzt die neue Version.

.. wirgendwie komisch. Die Textbox in deinem Screenshot ist nicht weg, sondern die Menüleiste oben klaut sich den gesamten Platz. Unter Windows 8 passiert das nicht, aber auf meinen Windows 7 Laptop konnte ich das nachstellen.

Gruß
Roland

Thema: C#-Scripteditor-Control basierend auf Komponenten von SharpDevelop
Am im Forum: .NET-Komponenten und C#-Snippets

Hi,

ne, leider ist das eine Abhängigkeit von der OpenSource Bibliothek SharpDevelopCodeCompletion. Dort wird ein Behavior verwendet, das man an das AvalonEdit Control ran hängen kann.

Ich sehs grad auch, dass die Dll fehlt. Hätte eigentlich gedacht, dass die mit bei den Nuget Packeten mit drin liegt. Scheinbar ist die bei mir durch VS 2012 oder Win8 automatisch schon drauf.

Hier ein Link zu einem Kompilat mit allen Abhängigkeiten

Gruß
Roland

Thema: C#-Scripteditor-Control basierend auf Komponenten von SharpDevelop
Am im Forum: .NET-Komponenten und C#-Snippets

Ah sorry,
das liegt daran, weil ich an einer Stelle async-await und damit das .Net Framework 4.5 verwendet habe.

Hier eine Version für 4.0 und Visual Studio 2010.
Link

Gruß
Roland

Thema: C#-Scripteditor-Control basierend auf Komponenten von SharpDevelop
Am im Forum: .NET-Komponenten und C#-Snippets

Hallo zusammen,

vor kurzem habe ich mit den aktuellen Komponenten von SharpDevelop rumgespielt, um einen einfachen kleinen C#-Scripteditor zu entwickeln. Herausgekommen ist ein relativ einfacher Editor mit SyntaxHighlighting und Intellisense. Screenshot ist angehängt.

Hier der Download-Link zur Projektmappe (.Net 4.5 / VS2012). Die Umsetzung ist relativ einfach mit den OpenSource-Bibliotheken AvalonEdit und SharpDevelopCodeCompletion. Ein "Compile and Run" Button ist natürlich auch dabei ;)

Hier noch ein Link zu einem Kompilat mit allen Abhängigkeiten (.Net 4.0)

Gruß
Roland

C#-Scripting, Scripteditor, SyntaxHighlighting, Intellisense

Thema: C# (bzw. ASP.NET) in UNIX-Umgebung... möglich? wenn ja, wie und welche Einbußen bringt's mit sich?
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hi,

es geht hier eigentlich um Linux. Folgender Teil aus dem ersten Beitrag hier:

Zitat
dem Zielsystem nur UNIX, genauer gesagt, Ubuntu verfügbar

ich vermute mal, dass verschiedene Unix-Varianten wie HP-UX oder IBM AIX auch für Mono Probleme machen könnten. Zumindest habe wir, als wir das vor einem Jahr ungefährt kurz untersucht haben, keine wirklichen Erfahrungsberichte auf diesen Systemen gefunden. Offiziellen Support für Mono gabs damals auch nur für Suse Linux, wenn ichs noch richtig im Kopf habe.

Gruß
Roland

Thema: [erledigt] Problem mit WPF WCF und EntityFramework ConnectionString
Am im Forum: Netzwerktechnologien

Hi,

verstehe ich das richtig, dass du die Verbindung zum SQL-Server in der App.Conf des Clients konfiguriert hast?
Die würde einfach nur in die Konfiguration des Service gehören.

Gruß
Roland

Thema: TFS: Projektmappe selbst nicht unter Quellcodeverwaltung
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hi,

hab ich so noch nie gesehen. Wie ladest du denn die Solution ins TFS hoch bzw. wie legst du denn die Projektmappen an?

Im nachhinein solltest du das aber relativ einfach fixen können, und zwar kannst du über die Quellcodeverwaltung die sln-Datei manuel zum TFS hinzufügen. Danach sollte alles wie gewohnt klappen.

Gruß
Roland

Thema: DataTable in CSV einlesen (Spaltenweise)
Am im Forum: Datentechnologien

Hi,

mit was ließt du denn die CSV-Datei ein? Mit Excel?

Im CSV-Format trennt man normalerweise mit ";" und nicht mit ",", eventuell ist ja das schon das Problem.

Gruß
Roland

Thema: [erledigt] Eingriff in Type.GetType zum Auflösen der korrekten Assembly
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hi,

Zitat
...Die .NETZ-Executable listet manche Assemblies in AppDomain.CurrentDomain.GetAssemblies() doppelt...

Ich würde dann aber mal genau überprüfen, ob im Programm noch alles so funktioniert, wie es soll. Glaub nicht, dass es ohne Folgen bleibt, wenn Assemblies doppelt geladen werden.

Gruß
Roland

Thema: [erledigt] Eingriff in Type.GetType zum Auflösen der korrekten Assembly
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hi,

zuerst mal muss ich sagen Hää...?
Ich versteh dein Problem ehrlich gesagt nicht so ganz, versuche aber trotzdem mal eine Antwort zu geben.

Ich frage mich gerade, wass das AssemblyResolve bei dir überhaupt für einen Sinn macht. Das Ereignis wird aufgerufen, wenn eine Assembly zu einem Typ nicht gefunden werden kann und bietet die möglichkeit, sie etwa aus einem anderen Pfad o. Ä. zu laden. Bei dir würde eigentlich dieses typeof(EinTypTDerBekanntIst) bereits das Laden der Assembly auslösen, und zwar der Assembly, in der EinTypTDerBekanntIst enthalten ist. Sollte das eine andere sein und du gaukelst der CLR vor, dass das die eigentlich gesuchte Assembly ist, und du kriegst Probleme später im Programm. Ich würde die Assembly nicht per Assembly.GetAssembly(typeof(...)) zurückgeben, sondern innerhalb des Ereignisses einfach die richtige Assembly laden (z. B. aus einer Datei per Assembly.LoadFile Methode).

Gruß
Roland

Thema: Editierbares PDF
Am im Forum: Office-Technologien

Hi David-Ilm,

mit Standardmitteln kommst du da nicht weiter. Schau dir mal die OpenSource Libraries PdfSharp oder iTextSharp an, eventuell können die das (weiß ich jetzt aber leider nicht). Alternativ gibt es auch kostenpflichtige Bibliotheken, die so etwas können.

Gruß
Roland

Thema: Log Datei schreiben: Letzte Zeile vor Programmende wird nicht in die Datei geschrieben
Am im Forum: Rund um die Programmierung

.. oder einfach nur sauber disposen..

Grund für dein Problem ist, dass der FileStream puffert. Das bedeutet, dass etwa ein Aufruf von Write(...) nicht zwingend direkt in der Datei landet, sondern erst einmal im Arbeitsspeicher, um so die Schreibaufrufe auf die Datei zu optimieren. Per Flush oder eben vorm Beenden des Programms per Dispose stellst du sicher, dass auch der Puffer in der Datei landet.

Gruß
Roland

Thema: TCP/IP Sockets und Quality of Service
Am im Forum: Netzwerktechnologien

Hallo weismat,

danke für die Info, das schau ich mir morgen einmal an.
Heute bin ich auch noch auf etwas anderes gestoßen:

socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.TypeOfService, tosValue)
Leider hat das unter Windows 7 scheinbar keine Wirkung. Zumindest waren keine Änderungen mit Wireshark auf der Sender und Empfänger Seiter erkennbar.
Zitat
Du solltest schon wissen, welche Codes/Werte Du in Windows Sockets version 2 API setzen wuerdest.
Das ist kein Thema, den Wert würde ich vorgegeben bekommen. Die Anforderung dafür kommt von einem Netzwerker. Der benötigt im Prinzip nur etwas, anhand dem er Packete priorisieren kann.

Gruß
Roland

Thema: TCP/IP Sockets und Quality of Service
Am im Forum: Netzwerktechnologien

Hallo Weismat,

hm.. sehe ich jetzt nicht als sinnvollen weg, auch wenn es so möglich wäre. Wenn ich es richtig verstehe, müsste man so das ganze TCP/IP Protokoll nachprogrammieren, oder?

Gruß
Roland

Thema: TCP/IP Sockets und Quality of Service
Am im Forum: Netzwerktechnologien

Hallo Kollegen,

kurze, aber nicht ganz einfache Frage:
Kennt jemand eine Möglichkeit für .Net Sockets einen Quality-of-Service Parameter einzustellen? Es geht darum, um TCP/IP Packete zu priorisieren.

Gruß
Roland

Thema: WPF AppDomain - Framework support?
Am im Forum: GUI: WPF und XAML

Hi,

Referenzen wirst du nie direkt übergeben können, wenns über die AppDomain oder gar dem Prozess hinaus geht - außer es sind nicht verwaltete Referenzen. Du musst also etwa um Objekte zu übergeben diese Serialisieren. Bei Oberflächen im WinForms bereich gibts Workarounds über die Windows API, WPF bin ich mir jetzt nicht sicher.

System.AddIn habe ich in der Vergangenheit einmal angetestet, bin aber dann bei der eigenen Lösung geblieben. Grund war die relativ hohe Komplexität und der Aufwand, den das Framework erzeugt. Hat sich einfach nicht gerechnet für mich. Also Fazit finde ich das Framework - vorrausgesetzt man möchte wirklich ein absolut solides AddIn Framework haben - aber dennoch sinnvoll.

Gruß
Roland

Thema: [WCF] Rest-Service, Custom Authentification über SessionParameter, Custom RoleProvider
Am im Forum: Netzwerktechnologien

Hi Rabban,

ich beschäftige mich selber seit einer Weile mit REST, m. E. sollte es schon drin sein. Aber: Die Logik, dass das PrincipalPermission Attribute korrekt angewendet wird, wirst du wohl oder übel selber schreiben müssen. Besonders dann, wenn du mit einem eigenen Session-Key arbeitest.

Über welchen Weg möchtest du eigentlich das REST-API zur verfügung stellen? Über die Funktionen, die WCF im Framework 3.5 / 4.0 hat oder bereits mit der ASP.Net WebApi in .Net 4.5?

Gruß
Roland

Thema: Workflow & SPS, Konzept
Am im Forum: Rund um die Programmierung

Hallo Kollegen,

wo liegt das Problem?
Wenn man nur mit SPS reden will, braucht man ja nicht Echtzeitfähig sein. Wenn du zum Beispiel Meldungen hast, bei denen eine Verarbeitungszeit ~ 100 bis 200ms reicht, dann hast du definitiv keine Probleme. Draußen gibts auch Lösungen, bei denen SAP- oder andere ERP-Systeme direkt mit der SPS reden.

Du musst auch mit bedenken, dass ne SPS selber eine Zykluszeit hat, nach dem was ich gehört habe auch zum Teil zwischen 30 und 40ms. Da kann der GC schon ein paar mal laufen, bis man die Zeit erreich..

Zum Kommunikationsweg: Frag am besten die SPS'ler, was für beide Seiten am einfachsten ist. TCP/IP Native können die meisten, OPC wär ich vorsichtig, da brauchst du eigene Bibliotheken dafür und die Entwicklung kann am Anfang etwas schwierig sein. Das C# Programm würde ich aber nicht auf einem Windows CE, sondern dann eher auf Embedded aufwärts laufen lassen mit entsprechend guter PC-Hardware.

Wegen Workflow: Das musst du dir gut überlegen, ob du die verwenden willst. Ich persönlich finde (zumindest die WF4) zwar cool, hängt aber vom Anwendungsfall ab. Schau dir am besten ein paar Tutorials durch, damit du es selbst abschätzen kannst. Speziell für diesen Fall vorgesehen sind sie übrigens gar nicht, sie sind zur Steuerung von langläufigen Geschäftsprozessen da. Aber wenn, dann auf jeden Fall WF 4 verwenden und nicht WF3 (schon alleiene wegen der Performance)

Gruß
Roland

Thema: Eventbasierte WCF Kommunikation
Am im Forum: Netzwerktechnologien

Hallo Tman,

das wird von WCF unterstützt, zum Beispiel so:
Events and Callbacks

ich selbst habe damit zwar noch nichts gemacht, sollte aber relativ einfach klappen. Zumindest wenn an beiden Seiten eine .Net Anwendung ist ;)

Gruß
Roland

Thema: Warum ergibt INotifyPropertyChanged kein Ping-Pong?
Am im Forum: GUI: WPF und XAML

Hi m74,

das kommt daher, weil man i. d. R. im Setter von der Eigenschaft zunächst prüft, ob sich der Wert auch wirklich verändert hat. Wird also auf ein Property wieder ein Wert gesetzt, den es schon hat, dann kommt kein PropertyChanged.

Gruß
Roland

Thema: WCF Service "Online" Binding
Am im Forum: Netzwerktechnologien

Hallo Campy,

Direkt offene Verbindungen abzufragen geht - zumindest bei Http Bindings - nicht. Bei den anderen weiß ich es nicht genau, glaub aber eher, dass da WCF zustandslos arbeitet.

Du könntest so etwas über Alive-Aufrufe von den Clients realisieren. Heißt: Jeder Client sendet zyklisch eine Alive-Nachricht zum Server. Somit wissen beiden Seiten über den Zustand der Verbindungen bescheid. Kommt das Alive von einem Client nach einem bestimmten Timout nicht mehr, so weiß der Server, dass es diesen Client nicht mehr gibt.

Gruß
Roland