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 GarlandGreene
Thema: Mit welcher Programmiersprache habt ihr angefangen?
Am im Forum: Smalltalk

Basic auf dem C64, danach ein paar Grafikdemos in Assembler/MS, ebenfalls C64. Da war ich so 12-14. Ein paar Jahre später dann etwas VBA (mehr oder weniger aus der Not heraus während der kfm. Ausbildung), mit 22 dann"offizieller" Einstieg in den Beruf mit Visual Foxpro.

Thema: LogFile und Style
Am im Forum: Rund um die Programmierung

Zitat von Siassei
Hallo,

einen allgemeine Style-Richtlinie gibt es nicht, aber warum eigentlich nicht? Ich persönlich würde mich an Log4Net bzw. Log4J orientieren und das ganze als eine XML-File abspeichern. Der Vorteil bei einer XML-File liegt auf der Hand. XML gibt eine einheidliche Struktur vor und das ganze kann bequem mit einem XML-Viewer, HMTL-Browser, ... betrachtet werden. Zudem könntest du eine Style-Datei ala z.B. CSS mit dran hängen.

Logfiles in XML? Warum nicht gleich einen Text mit TTF-Fonts rendern und als hochauflösende Bitmap im Verzeichnis ablegen? Logfiles sind für Diagnostikzwecke da, die müssen lesbar und vor allem nicht zu aufgebläht sein. Weißt du, wie viel Overhead eine XML-Datei mitbringt?

Thema: Thread vs. Event
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

die ReportProgress-Methode löst nur das ProgressChanged-Event des Backgroundworkers aus. Ob du diese Methode benutzt (und im GUI-Thread dieses Event abonnierst) oder ein eigenes Event implementierst, bleibt dir überlassen. ReportProgress kann neben dem Fortschritt in Prozent auch ein beliebiges Objekt für weitere Detailinformationen zum Fortschritt übergeben, prinzipiell muss man dafür nicht noch ein eigenes Event bauen.

Thema: Thread vs. Event
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Zitat von Hajoseb

Wenn dann nur das mit den Events ...

Das heißt, wenn ich ein Event in einer Methode auslöse, ist diese Methode dann zu Ende ??? Ich möchte aber z.B. jedes Ergebnis innerhalb einer Schleife per Event an eine Sammel-Klasse melden ... geht das dann also nicht ???

nein, natürlich ist die Methode dann nicht beendet. Das Event wird ausgelöst und die Eventhandler werden ausgeführt. Danach kehrt die Ausführung zum nächsten Prozedurschritt nach der Auslösung des Events zurück. Events sind in diesem Zusammenhang nichts anderes als Methodenaufrufe, bei denen die Anzahl und die Namen der Methoden erst in der laufenden Anwendung ermittelt werden (eben durch Abonnieren eines Events).

Ein Event wird immer in dem Thread abgearbeitet, in dem es ausgelöst wird. Wird in dem Event in irgendeiner Form auf eine Benutzerinteraktion gewartet (darf natürlich nur im GUI-Thread passieren!) oder durch lock() oder ähnliches die Ausführung angehalten, steht dieser Thread und wartet darauf, daß die Blockierung aufgehoben wird. Löst der Thread aber ein Event aus, das durch Invoke() z. B. vom Backgroundworker zum GUI-Thread weitergereicht wird, kann das Event den Backgroundworker nicht mehr blockieren - der Worker löst das Event aus, durch Invoke() wird dieser Aufruf aber in einen anderen Thread verschoben und der Backgroundworker kann sofort weiterarbeiten. Das wäre beispielsweise eine praktikable Methode für deine Anforderung: der Backgroundworker rechnet und sendet in bestimmten Abständen Fortschrittsmeldungen über ein Event an den GUI-Thread, der diese Meldungen dann anzeigt. Dabei aber wie gesagt niemals das Invoke vergessen, ansonsten krachts gegebenenfalls bei der Ausführung.

das ganze trifft übrigens auch bei einem Einkern-Prozessor zu - auch wenn dieser keine echte parallele Verarbeitung beherrschen kann, wechselt das Betriebssystem je nach Priorisierung ständig zwischen den laufenden Threads, so daß diese zwar nicht parallel, aber unabhängig voneinander laufen.

Thema: Webservice auf IIS - Kein Aufruf von externem Programm möglich
Am im Forum: Web-Technologien

ist die Webseite denn auch korrekt konfiguriert? Hast du mal nachgesehen, ob was in der Ereignisanzeige oder im Webserver-Log steht?

Thema: leerer Inhalt in die db schreiben
Am im Forum: Datentechnologien

erlaubt die Spalte in der Access-Tabelle denn Nullwerte?

Thema: leerer Inhalt in die db schreiben
Am im Forum: Datentechnologien

entweder schlägt die Geschichte fehl, weil die interne Konvertierung von Datentyp String (das ist der Datentyp, den ein Textbox-Text hat) zu Double fehlschlägt (Double.Parse müsste mit einem leeren String auch fehlschlagen) oder weil die Tabellenspalte keine Nullwerte erlaubt. Ich tippe bei der Fehlermeldung auf ersteres.

Thema: Methodenaufruf funktioniert auf PC (Vista) allerdings nicht auf Server (Windows 2003)
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

wäre es möglich, daß die Konfigurationseinstellungen deiner Anwendung (Properties.Settings.Default, Standard-Konfigurationseigenschaften des Projekts) auf dem Server nicht existieren?

Thema: [Web Services] Zu bestimmter Zeit Methode ausführen? (Timerjob)
Am im Forum: Netzwerktechnologien

Zitat von Xynratron
Hallo,
Wenn es ein Dienst sein muss, würde ich direkt einen echten Dienst schreiben. Wenn es auch ein normales Programm erledigen kann, dann einfach wie GarlandGreene meinte per Task zu einem bestimmten Zeitpunkt das Programm starten (allerdings würde ich den Umweg über den Webservice auslassen).

den Webservice lasse ich in solchen Fällen nicht aus, weil ich damit den Datenbankzugriff über eine einzelne Komponente kapseln kann. Muss ich irgendwann die Datenbank umbauen (sei es ein Serverwechsel, Wechsel der Datenbank oder ähnliches), muss ich nur diese eine Komponente anpassen - alle an diese Komponente angeschlossenen Anwendungen bemerken davon dann nichts.

Thema: [Web Services] Zu bestimmter Zeit Methode ausführen? (Timerjob)
Am im Forum: Netzwerktechnologien

das macht man normalerweise über einen Webdienst-Client, der dann über den Windows-Zeitplandienst eingeplant wird. Im Prinzip also eine Konsolen- oder WinForms-Anwendung, die selbständig nach dem Start den Webdienst anspricht und damit die gewünschte Aktion auslöst. Hat auch den Vorteil, daß man z. B. die Einplanung sehr einfach ändern oder die Ausführung auch mehrfach täglich planen kann.

Thema: Zugriff auf MS Access DB mit x64 System?
Am im Forum: Datentechnologien

unter Erstellen/Konfigurationsmanager kannst du neue Plattformen erstellen. Normalerweise existiert nur die Plattform "Any CPU". In der Auswahlliste der Plattform findest du auch den Eintrag "Neu". Damit erstellst du einfach eine Plattform für x86-Prozessoren und wählst diese dann im Konfigurationsmanager für alle Build-Typen aus.

Thema: Vergleich von PHP und ASP.NET Anhand eines konkreten Projekts
Am im Forum: Web-Technologien

du hast den Performancetest in einer VM gefahren? Das macht die Werte etwas weniger aussagekräftig, da die Leistung von Anwendungen in einer VM aufgrund dieser zusätzlichen Schicht schon etwas anders skaliert als auf realer Hardware.

ein Fehler in dem Vergleich: .NET ist nicht vollständig von Windows und IIS abhängig. Zum einen kann man .NET-Code auch mit dem Apache ausführen (mittels mod_aspdotnet), zum anderen gibt es auch Mono, das zumindest .NET 2.0 fast vollständig implementiert.

Thema: C# auf Webserver
Am im Forum: Web-Technologien

der IIS wird ja mit Windows mitgeliefert. XP hat den IIS 5, Server 2003 den IIS 6, Vista und Server 2008 liefern IIS 7 mit. Standard-Webdienste laufen auf allen 3 Servern, die Unterschiede liegen hauptsächlich im Setup der Webanwendung (speziell der IIS 7 ist da im Vergleich zur Version 5 und 6 deutlich anders aufgebaut). IIS nachinstallieren (über Systemsteuerung/Software), aktuelles .NET-Framework installieren. Wenn das Framework schon drauf ist und der IIS nach dem Framework installiert wird, einmal "aspnet_regiis -i" aufrufen (liegt unter %WINDIR%\Microsoft.NET\Framework\Version, z. B. C:\Windows\Microsoft.NET\Framework\v2.0.50727), damit das Framework sich im IIS registriert. Danach ist der Webserver bereit.

Thema: C# auf Webserver
Am im Forum: Web-Technologien

wenn du .NET-Programme auf einem Server im Internet laufen lassen willst, wirst du höchstwahrscheinlich einen Windows-Server mieten müssen. Mit Mono kann man auch .NET-Anwendungen unter Linux laufen lassen, die Kompatiblität ist aber nicht in allen Fällen gegeben, besonders wenn man brandaktuelle Features nutzen will. .NET 2.0 wird aber fast vollständig unterstützt. Problem: der Provider muss Mono anbieten - keine Ahnung, ob sich das ansatzweise durchgesetzt hat.

Ansonsten bliebe halt ein Windows-Server, zumeist mit IIS als Webserver-Komponente. Da kann man die volle Palette von Windows-Anwendungen laufen lassen, man ist im Prinzip nur durch die Vorgaben des Providers bezüglich Softwareinstallation eingeschränkt.

deine Idee könnte über selbsterstellte ASP.Net- oder WCF-Webdienste abgedeckt werden. Als Datenbank-Backend irgendein SQL-Server (je nachdem, was der Provider im Angebot hat), Treiber gibts für fast alle Datenbanken.

Thema: Datei aus Projektmappe(Ordner)
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

deine laufende Anwendung hat prinzipiell nichts mit der Projektmappe zu tun, sie hat keinerlei Informationen darüber. Du könntest den Ordner mit den Dokumenten in das Projekt aufnehmen und beim Erstellen alle darin enthaltenen Xml-Dokumente mit in den Ausgabeordner kopieren lassen. Das kannst du in den Eigenschaften der einzelnen Dateien festlegen, wenn sie einmal Teil des Projekts sind. Ansonsten bliebe noch die Möglichkeit, die Dateien nach dem Erstellen per Kommandozeile (da gibts eine Möglichkeit, nach dem Erstellen vorgegebene Befehle auszuführen) zu kopieren.

Thema: Client/Serverprogrammierung Stefan Dufter
Am im Forum: Buchempfehlungen

42 € für 104 Seiten, laut Rezension auch noch sehr oberflächlich? Da würd ich wirklich eher online auf die Suche gehen.

Thema: Bibliotheken fürs Compact Framework
Am im Forum: Rund um die Programmierung

viele Entwickler scheinen sich beim Mono-Framework zu bedienen. Das implementiert ja prinzipiell fast das gesamte .NET-Framework in Version 2. Ich weiß nicht, wie das lizenztechnisch im Bezug auf kommerzielle Projekte aussieht, aber wenn das abgeklärt ist, kann man fehlende Klassen unter Umständen aus dem Mono-Framework übernehmen. Ich weiß nicht, wie es mit dem Quellcode des "originalen" .NET-Frameworks aussieht. Der Code ist ja ebenfalls veröffentlicht worden, aber da weiß ich nicht, ob MS eine irgendwie geartete Nutzung des Quellcodes erlaubt.

Thema: WebServices lokalisieren
Am im Forum: Netzwerktechnologien

sowas löst man am besten über DNS-Alias bzw. CNAMEs. Ein Webdienst bekommt einen festen Domänennamen, der im DNS-Server auf den aktuell mit diesem Webdienst betrauten Webserver zeigt. Der Webserver wiederum wertet den HTTP-Hostheader aus und weiß darüber, welche Webseite bzw. welcher Webdienst angefragt wurde. Muss der Webdienst jetzt umziehen (aus welchem Grund auch immer), wird einfach im DNS-Server der neue Zielserver im DNS-Eintrag eingetragen.

Thema: Visual Studio 2008 SP 1
Am im Forum: Szenenews

Infodatei zum SP1:http://download.microsoft.com/download/7/F/6/7F61602F-58AC-40D5-92C3-D9647F93E8E0/VS2008SP1Readme.htm

die haben doch nen Schaden. Das ist ne blöde IDE. Es kann doch nicht sein, daß man zur Installation eines Updates eine Readme von der Länge der Bibel durchackern muss.

Thema: Hybrid-Festplatten?
Am im Forum: Smalltalk

da im Prinzip nur das laut MS so unglaublich erfolgreiche Vista davon profitiert hätte, sind Hybridplatten mehr oder weniger tot, bevor sie zur Welt gekommen sind. Die meisten Hersteller sparen sich den Quatsch und springen direkt auf den SSD-Markt auf.

Thema: SQLCompact 3.5 - Performanceprobleme
Am im Forum: Datentechnologien

auf was für einem Speicher liegt die Datenbank? Wenn man die Daten selbst auf einem sehr langsamen Speicher (z. B. dieser DiskOnChip-Kram, den viele Geräte haben) legt, ist die Performance ziemlich zum heulen. Hab ich mit SQLite feststellen müssen. Dazu kommt, dass auf mobilen Geräten meist relativ wenig Speicher zur Verfügung steht und ein SQLExpress über Netzwerk ab einer gewissen Datenbankgröße schneller ist. Um wie viele Daten handelt es sich denn?

Thema: DateTime-TimeSpan
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

wo weist du denn einem TimeSpan eine DateTime zu? Du führst eine Operation mit dem Operator "-" aus. Dessen Überladung mit zwei Parametern des Typs DateTime gibt als Ergebnis eine TimeSpan aus.

du kannst übrigens auch für eigene Datentypen Operatoren überladen:
http://msdn.microsoft.com/de-de/library/s53ehcz3(VS.80).aspx

Thema: Im eigenen Thread eine Exception werfen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

was genau meinst du mit

Zitat von Khalid
Der Main-Thread weis jetzt nur welche Exception aufgetreten ist. Der hat sich natürlich nicht darum zu kümmern, was passiert. Das mus ja halt der Thread alleine machen.

Ein Thread kann nichts "wissen". Sei dir bewusst, daß der Mainthread von der Exception und auch von dem Event unbeeinflusst weiterläuft. Was du machen kannst, um im Mainthread etwas über gegebenenfalls aufgetretene Ausnahmen zu erfahren: du kannst im Event, das du nach der Ausnahme auslöst, die Details der Ausnahme in einem Feld, z. B. einer statischen Liste, ablegen. Auf diese Liste greifen dann sowohl der Worker als auch der Hauptthread zu, der Hauptthread kann darüber Details zur Ausnahme abholen.

Gefährlich dabei: solche Zugriffe auf Listen und Felder über mehrere Threads hinweg können zu kaum auffindbaren Ablauffehlern führen. Deshalb sollte man für die Felder, die auf diese Art genutzt werden, einen Sperrmechanismus (Stichworte "lock", System.Threading.Monitor) einführen. Der sorgt dafür, daß ein Thread mit seinem Zugriff wartet, wenn der andere Thread gerade die Sperre hält.

Thema: Im eigenen Thread eine Exception werfen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

der Eventhandler läuft immer in dem Thread, der das Event ausgelöst hat. Warum ist dir denn überhaupt wichtig, daß der Mainthread das Event bearbeitet?

Thema: SharpZipLib prooduziert sporadisch defekte Archive
Am im Forum: Rund um die Programmierung

schliesst du die Datei auch sauber ab, wenn du die Inhalte hinzugefügt hast? Der ZipOutStream muss, wenn ich mich recht erinnere, erst mit Finish() abgeschlossen und dann mit Close() geschlossen werden.

Thema: WebService Typen Konvertierung
Am im Forum: Netzwerktechnologien

für ein untypisiertes Dataset muss das Framework keinen neuen Typen anlegen, da wird einfach die Standardklasse genommen (bzw. die übergebene Auflistung wird in ein Dataset gewandelt). Das passiert (wenn ich mich recht erinnere) auch, wenn du elementare Datentypen als Parameter benutzt (String, Integer usw.). Auch da erzeugt VS keine neuen Klassen, sondern castet das einfach in den entsprechenden .NET-Typen. Das ganze funktioniert nur dann nicht mehr, wenn VS nicht weiß, welchen Typen es nehmen soll. Teilweise kann man in VS 2008 auch Konvertierungsoptionen einstellen (z. B. für Auflistungen), teilweise ist das wahrscheinlich einfach fest verdrahtet. Sobald VS mit dem Typ nix anfangen kann bzw. der Typ nicht Teil des .NET-Frameworks ist, legt VS eine Proxyklasse dafür an.

Man kann auch selbst mit dem Webdienst kommunizieren, ohne die von VS generierten Klassen zu benutzen (man kann sich ja auch den generierten Code anschauen und als Grundlage nutzen). Nachteil ist dann allerdings, daß man dann nicht mal eben die Update-Funktion von Visual Studio zur Aktualisierung der Webreferenz (weil es eben diese nicht mehr gibt) nutzen kann. Wäre in deinem Fall aber auch nicht nötig, da beide Seiten dieselben Klassen nutzen. Du müsstest dann allerdings dafür sorgen, daß auf beiden Seiten dieselbe Version der Klassenbibliothek zum Einsatz kommt.

Thema: WebService Typen Konvertierung
Am im Forum: Netzwerktechnologien

das Problem ist, daß für den Client nicht klar ist, daß die vom Webservice erwartete Klasse dieselbe ist wie die, die du in deiner Library hast. Denn der Client kennt die Implementierung des Webservices nicht (soll er auch nicht kennen). Dementsprechend generiert Visual Studio bei Aktualisierung der WebReference eine Klasse, die alle vom Webservice benötigten Eigenschaften enthält. Dass du zufälligerweise eine Klasse hast, die bereits alle diese Eigenschaften besitzt, ist VS natürlich egal - es weiß ja nicht, daß die Klasse dieselbe ist wie die, die auf der anderen Seite benutzt wird.

Ich hab vor einiger Zeit ein ähnliches Problem gehabt und das ganze pragmatisch gelöst, da ich nicht zuviel Zeit damit verlieren wollte: ich hab in der Client-Implementierung einen Konverter geschrieben, der mir aus dem lokal bekannten Objekt des Typs X das für den Webservice benötigte Objekt erzeugt. Man kann das ganze über Reflection auch etwas automatisieren, indem man in einer Methode Quell- und Zieltyp angibt und dann nur prüft, welche Eigenschaften und Felder gleich benannt und gleichen Datentyps sind und dann die Werte übernimmt. Dann muss man sich nicht jedes mal, wenn man an der Klasse Eigenschaften ändert, mit dem Konverter auf Clientseite befassen.

übrigens: schau dir mal die Webcasts (http://www.microsoft.com/germany/msdn/webcasts/finder/default.mspx) von MS zum Thema Webservices an. Besonders die Einführung zu dem Thema (ist aus dem Jahr 2004) ist zum Verständnis der zugrundeliegenden Techniken ganz interessant. Denn es werden im Grunde keine .NET-Klassen zwischen Server und Client hin- und hergeschoben, sondern nur XML-Dokumente (serialisierte Versionen dieser Klassen). Auf beiden Seiten wird dann daraus jeweils ein Objekt erzeugt (deserialisiert). Man kann bei dem Thema auch ganz schnell Probleme bekommen, wenn man dem Framework nicht explizit vorgibt, wie es eine Eigenschaft oder einen Typ serialisieren soll. Da kann eine Umbenennung eines Parameters in einer Webservice-Methode dazu führen, daß der Client nicht mehr mit dem Webdienst kommunizieren kann, obwohl sich für ihn eigentlich nichts geändert hat.

Thema: Einfache Methode um String zu kürzen?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

anscheinend funktioniert das wirklich so: http://www.danielmoth.com/Blog/2007/05/using-extension-methods-in-fx-20.html

Die Extensions sind ja eigentlich kein .Net-Feature, sondern nur eine Compiler-Spielerei.

Thema: Einfache Methode um String zu kürzen?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

was anderes fiele mir jetzt nicht ein. Alternativ könnte man eine Substring-Extension schreiben, die keine Ausnahme schmeisst.

Thema: Einfache Methode um String zu kürzen?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen


string x = "Blubbblablum";
x = x.Length > 5 ? x.Substring(0,5) : x;

dieser Code kürzt den String "x" auf 5 Zeichen, beginnend beim ersten Zeichen.