Laden...
Avatar #avatar-2079.jpg
kleines_eichhoernchen myCSharp.de - Member
Softwareentwickler Ursprünglich Vogtland, jetzt Much Dabei seit 07.11.2006 3.971 Beiträge
Benutzerbeschreibung

Forenbeiträge von kleines_eichhoernchen Ingesamt 3.971 Beiträge

01.12.2010 - 07:44 Uhr

Geht auch super via Delegate.BeginInvoke. Einfach ein passendes Delegate erstellen, bzw. Action<> oder Func<> verwenden. Damit musst du nicht auf Typsicherheit verzichten und kannst auch wenn du brauchst einen Rückgabewert verwenden.

Schau dir bitte auch den Rückgabewert von BeginInvoke. Mit dem Waithandle hast du automatisch eine Thread.Join-Funktion.

Nachteil des ganzen, beim Aufruf von BeginInvoke solltest du später EndInvoke aufrufen. Besonders bei den MS Implementationen könnten sonst Speicherlecks entstehen.

Selber Threads zu erstellen, ist meist nur sinnvoll, wenn du die volle Kontrolle(Überwachung) über den Thread brauchst oder es sich um eine "lange" Aufgabe handelt. Wenn du nur etwas parallelisieren möchtest, ist die direkte Verwendung von Thread verkehrt, da allein das Erstellen des eines neuen Threads Ressourcen und Zeit verbraucht. Threadpool (BeginInvoke zählt auch dazu) verwenden existierende Threads, die nur drauf warten endlich mal was zu tun zu bekommen.

29.11.2010 - 07:57 Uhr

Soweit mir bekannt, ist es nicht möglich aus einem Setup heraus ein weiteres Setup zu startet.

Doch das geht. Das Ganze nennt sich Chainer. Bestes Beispiel ist die Installation des SQL Servers, die aus vielen kleinen einzel MSIs besteht. Problem ist nur, die MSI Pakete müssen den Vorgang unterstützen.

Hallo TinaQ,
eine gute Alternative wäre, du schreibst dir ein eigenes Bootstrapper-Package. Siehe dazu Authoring a Custom Bootstrapper Package. Mit entsprechenden InstallConditions kannst du den Bootstrapper entsprechend Steuern.

17.11.2010 - 11:55 Uhr

Hallo chilic,
wenn du es chic haben willst, musst du auf IXmlSerializable umsteigen und die Klasse, die Point verwendet eben selbst serialisieren.

17.11.2010 - 08:18 Uhr

Die Methode integriert sich in ein Framework welches die Methode auch synchron aufruft, daher erwartest es auch das Ergebnis synchron. Dem entsprechend kann ich dort den Aufruf leider nicht beeinflussen.

Aber du kannst die Gui logisch von deinem Framework/BusinessClass trennen - Ist kein muss, nur sind die Anwender von heute sehr verwöhnt.

Alternative zu Thread.Sleep ist ein Timer.

15.11.2010 - 07:28 Uhr

Schreib dir ne eigene Struktur und spendiere ihr entsprechende Konvertierungsoperatoren.

10.11.2010 - 08:26 Uhr

Du kannst die Seite beim Server-Start entsprechend auch "vorladen". Führe dazu einfach beim Start


telnet localhost/YourSite.aspx 80

aus. Am besten erstellst du dir mit sc.exe einen Dienst und gibst als Abhängigkeit den WWW-Publishing-Dienst an.

08.11.2010 - 08:04 Uhr

Wenn das ganze später eventuell mal erweitert werden soll, könnte es Sinn machen, statt Xml direkt eine Scriptsprache (wie Lua, oder C# selbst) zur Steuerung zu verwenden.

05.11.2010 - 07:42 Uhr

Ist die COM-Dll registriert (regsvr32)?

Wie instanzierst du eine Klasse/Interface?

03.11.2010 - 08:18 Uhr

Hallo Marsstein,
doch ich glaube schon. Das liegt vor allem an unseren (teils sehr) beschränkten Politikern, die nur über unwichtige Themen wie GSV debattieren bzw. sich öffentlich dazu äußern.

Die wirklich wichtigen Themen wie SWIFT oder die Weitergabe persönlicher Daten bei EC-Bezahlung wie bei REWE spricht keiner an bzw. geht bei den unwichtigen Gewusel direkt unter.

Genauso das Thema "Schützt eure Kinder". Die Politiker nutzen die Ängste der Bevölkerung um irgendwelche sinnlosen Gesetzesänderungen durch zu boxen, teilweise mit schwerwiegenden Konsequenzen.

02.11.2010 - 08:18 Uhr

solltest auch darauf achten, dass du dir immer die Timer-Instanz merkst. Tust du das nicht, räumt der GC dir den Timer weg und das Ticken hört dann auf.

29.10.2010 - 07:52 Uhr

Lass die Zeilenumbrüche so wie sie sind und geb deinen Text einfach in einem <pre>...</pre>-Tag aus. Vorteil, es werden auch fürs web "überflüssige" Leerzeichen beibehalten.

29.10.2010 - 07:50 Uhr

Mit Orca in den einzelnen MSI-Tabellen zu pfutschen, halte ich für schmierig. Erstell dir lieber dein eigenes Installationsprogramm mit Wix

Beispielsweise wird von AppSecInc. Community MSI Extensions ein SQL Dlg mit angeboten.

Solltest dich aber vorher mit dem Aufbau und der funktionsweise von MSI-Paketen vertraut machen.

29.10.2010 - 07:39 Uhr

Wie wärs mit dem Namespace?


typeName = "System.String";

sollte helfen.

28.10.2010 - 08:17 Uhr

Füg mal den Pfad zu den Symbolen manuell hinzu (siehe Bild).

Ansonsten kannst du auch über die Aufrufliste mit rechter Maustaste Symbole laden.

28.10.2010 - 07:48 Uhr

Falls man keine Symbole hat, kann man auch den Reflector (Pro Variante) benutzen. Wie das geht:

Debug With Reflector
.NET Reflector Pro Walktrough (Step 3)

27.10.2010 - 08:02 Uhr

Spätestens seit der letzten großen Koalition hat D. auch keine Demokratie mehr sondern nur eine Lobbykratie. Fasst alles was dort beschlossen wurde, hatte mit Volksnähe wenig am Hut.

27.10.2010 - 07:57 Uhr

Ein COM-lässt sich nicht speichern und beispielsweise nach einem Neustart direkt wiederverwenden. Problem ist das intern diverse Handles/Ressourcen benutzt werden, die zu einem späteren Zeitpunkt wahrscheinlich nicht mehr existieren.

Deshalb speichere nur den Zustand des Objektes (get, set Properties).

26.10.2010 - 13:08 Uhr

RTL2 und den Machern von Tatort Internet geht es nur um Einschaltquoten und Geld.

Hier ein paar sehr Interessante Links
Hobby-Ermittler und Hobby-Juristen am “Tatort Internet”
Nichts sagen, gehen
„TATORT INTERNET“ (Verbot der Ausstrahlung durch einstweilige Verfügung)
RTL 2 kann nicht den Rechtsstaat ersetzen.
Kinderschützer attackieren RTL-2-Show
Caritas-Mitarbeiter verschwindet nach TV-Folge

Den Kindern (egal ob betroffen oder nicht) geht es durch diese Sendung definitiv nicht besser als ohne.

26.10.2010 - 08:26 Uhr

Such dir ein altes VB6 und binde den COM-Verweis dort ein. Denke mit VB ist es leichter zu testen als mit C++

26.10.2010 - 07:58 Uhr

Hallo Hirnmaster,

Suche nach Post Build Events bringt keine Lösung

Und ob sie das tut. Beim Suchen Gehirn anschalten. Beispiel How to: Specify Build Events (C#)

21.10.2010 - 08:22 Uhr

Wird eine Exportdatei eines Fremdsystems dort abgelegt, reicht der Watcher den Dateipfad an die API-Importroutine des empfangenden Systemes weiter

Warum nicht einfach einen Timer (System.Threading.Timer) verwenden, der jede Sekunde entsprechende Verzeichnisse nach neuen Dateien durchsucht und anschließend deine API aufruft? So eine Klasse wäre schnell geschrieben und zu dem ressourcenschonender und skalierbarer als mehrere FileSystemWatcher.

21.10.2010 - 08:14 Uhr

Hallo DeViL666.on,
bitte befass dich erstmal mit den Möglichkeiten und Einschränkungen des .NET Frameworks sowie des Threadings unter Windows und .NET.

Du brauchst nämlich in diesem Beispiel keinen Thread und keinen Threadpool. Das gibts bereits nahezu alles fasst fertig. Schau dir bitte folgende Links an:

Abgeborchener Thread soll nichts mehr schreiben

Asynchronous Programming Design Patterns

Hallo olimlad,
du kannst das IAsyncResult für einen Timeout verwenden.


IAsyncResult result = Dns.BeginGetHostAddresses(..., callbackFunc);
WaitHandle.AsyncWaitHandle.WaitOne(5000);

...

private void callbackFunction(IAsyncResult result ) {
  Dns.EndGetHostAddresses(result);
}

Hinweis, ohne Aufruf von EndXY bei MS Implementierungen hat deine Anwendung ein Speicherleck, daher bitte immer bei BeginXY die passende EndXY-Methode aufrufen.

15.10.2010 - 07:33 Uhr

Notepad++ mit Syntaxhighlight für ziemlich viele Sprachen. Die zum Kompilieren benötigte csc.exe kennst du ja bereits.

Eine Build/Make-Datei wäre dabei auch nicht schlecht. Beispiel MSBuild oder NAnt

12.10.2010 - 07:55 Uhr

In .NET gibts dafür Probing. Such einmal nach app.config probing.

Der Dateiname ist absolut egal. Verweise werden anhand des Assemblynamens (Name der Assembly, Version, Kultur, public Token) geladen.

Als Install-Framework kann ich dir Windows Installer XML (WiX) toolset empfehlen. Solltest dich aber unbedingt vorher mit dem Aufbau und der Funktionsweise von MSI-Paketen auseinander setzen

12.10.2010 - 07:47 Uhr

Es ist ein allgemeiner Irrglaube das Javascript irgendwelchen Schutz mitsichbringt. Im Gegenteil JavaScript läuft im Browser. Jeder kann so den Quelltext einsehen, beliebig modifizieren (beispiel GreaseMonkey) und entsprechend Requests faken.

Außerdem kann man bereits als C#-Anfänger leicht eine Webseite mit einem Browser-Control fernsteuern - egal ob mit oder ohne JS.

Nur verschiedene Benutzereingabe bieten einen halbwegs akzeptablen Schutz vor einer Fernsteuerung.

11.10.2010 - 07:48 Uhr

Für mich gehört da ein Captcha hin, um wirklich genau feststellen zu können, ob das wirklich eine Usereingabe ist. Viele mögen zwar Captchas als lästig empfinden, allerdings sind diese wirklich wichtig, um eine programmgesteuerten und Usereingabe zu unterscheiden.

Meiner Meinung nach sollte auch jedes Bestellformular ein Captcha enthalten.

Gleichzeitig auch mit dem DateTime aus der Session prüfen, ob da eine mindestspanne dazwischen liegt.

Pro Client können auch mehrere Sessions existieren. Zum Beispiel bei verschiedenen Browsern.

Auch interessant: iX special "Sicher im Netz"

08.10.2010 - 15:52 Uhr

rein informativ und ohne mich selbst mit dem Inhalt des Links zu
identifizieren:

EBCs in der Praxis...erstmal abgebrochen, Beitrag von Manuel Wenk

08.10.2010 - 07:50 Uhr

Wenn es sich um ein MSI-Setup handelt, dann heißt die Zauber-Property ALLUSERS (Großschreibung beachten!)

05.10.2010 - 08:18 Uhr

class Foo {
  private static int s_Count;
  public static int Instances { get { return s_Count } }

  public Foo() {
    Interlocked.Increment(s_Count);
  }

  ~Foo() {
    Interlocked.Decrement(s_Count);
  }
}

Zusätzlich Dispose zu implementieren wäre auch nicht schlecht.

04.10.2010 - 07:59 Uhr

Installation von Requirements:
.NET Framework
SQL Server 2008 R2 Express (mit angepasster INI File, fuer die Installation)
IIS7

Schau dir mal dotNetInstaller an, der sollte das können.

Konfiguration des IIS:
Erstellung eines neuen App Pools (Name als Parameter)
Erstellung einer neuen Web Site (Name und Port als Parameter)

Und schliesslich kopieren der Files in den IIS.

Ist mit WIX wie du bereits erkannt möglich, allerdings ab IIS7 nur wenn auch die Abwärtskompatibilität zu IIS6 mit installiert ist. Dies lässt sich aber auch via Registry prüfen.

Desweitern habe ich einen Blick auf WIX geworfen. Leider muss man da jede File einzeln hinzufuegen, das selektieren ganzer Ordner ist wohl nicht moeglich.

Dann hast du meiner Meinung nach noch nicht verstanden wie MSI-Pakete funktionieren und aufgebaut sind. Dateien müssen in Komponenten eingetütet werden. Die Komponenten unterliegen beim Installieren, Update, Patchen und Multifeatures bestimmten Regeln. Eine generelles rekursives hinzufügen ist damit nicht möglich.

Schau dir dazu auch mal das in Wix mitgelieferte Programm Heat.exe an. Es ist auch sehr sinnig, Wix in (d)ein Build-Prozess (MSBuild, NAnt, usw) zu integrieren. Damit lässt sich dann für dein MSI-Paket entsprechend rekursiv auch Dateien hinzufügen. Sinnvolles Beispiel, Bilderordner.

23.09.2010 - 10:08 Uhr

Du hast 3 Möglichkeiten:

  • du führst die CA vor oder nach der eigentlichen Installation aus (InstallUISequenz)
  • Beim ersten Start deines Programmes.
  • Oder ein per User-Setup (AllUser=0)
22.09.2010 - 13:27 Uhr

wenn es nicht auf Performance und Ressourcen drauf ankommt, kannst du in Read und Write auch ein XmlDocument verwenden

21.09.2010 - 13:23 Uhr

Installier dir Firebug oder nutze im IE8 die Entwicklertools(F12). Damit kannst du dein JavaScript entsprechend gescheit debuggen und sehen wo er hängen bleibt.

21.09.2010 - 13:20 Uhr

Ich kenne mich mit netzwerk noch nicht recht gut aus

Solltest du aber. Besonders wenn ein Teilnehmer sich hinter einem Router oder Firewall befindet. Weiterhin solltest du dir Grundlagen von Netzwerkprotokollen aneignen, damit du verstehst, was zwischen Sender und Empfänger zwischendrin alles abgeht und auch schief gehen kann.

17.09.2010 - 12:33 Uhr

ab .NET4.0

Directory.EnumerateFiles-Methode

Macht die Ausführung insgesamt zwar nicht schneller, aber du kannst dem Benutzer bereits gefundene Dateien direkt anzeigen. Herkömmliche Variante blockiert, bis alle Dateien gefunden worden sind.

17.09.2010 - 12:30 Uhr

Verwendest du Firefox zum testen und das auf einem XP/Vista/Win7 PC möglicherweise 64Bit?

Grund könnte IPv6 sein. Fixing Firefox Slowness with localhost on Vista (or XP with IPv6)

17.09.2010 - 08:13 Uhr

Oben schreibst du das dein Entwicklungsrechner nicht in der selben Domain ist. Was denn nun jetzt?

Sind die Rechner beide in einer Domain oder nicht?

17.09.2010 - 08:11 Uhr

Die UAC gibts erst seit Vista. XP hat das Ding nicht.

Wenn du Adminrechte brauchst, muss deine Anwendung auch als Admin gestartet werden. Sonderfall, Vista/Win7, dort haben die Admin-Konten standardmäßig nur eingeschränkte Rechte. Erst beim "runas" erhältst du volle Adminrechte.

Unter XP das gleiche, brauchst du Adminrechte starte deine Anwendung als Admin. Unterschied zu Vista/Win7, dort hat der Admin bereits volle Rechte.

Das hilft dir aber nicht, wenn deine Anwendung nur als "Benutzer" gestartet wurde. Dort hilft dir auch kein UAC. Dort kannst du höchstens Impersonate verwenden.

17.09.2010 - 08:03 Uhr

Hallo Regenwurm,
wenn du pro Socket ein Thread verwendest, ist deine Anwendung auf eine bestimmte Anzahl von Clients limitiert.

Jeder Thread verbraucht Speicher und Handles. Irgendwann ist je nach Hardware schluss (32Bit beispielsweise maximal 2GB virtueller Speicher)

Ist die Arbeitsweise deine Anwendung nicht threadgebunden, sondern kommt aus einem Pool, kann die Anwendung (fast) beliebig nach oben skaliert werden.

Wie gesagt, Asynchron ist das ganze schon (BeginAccept etc. implementiert).

Das und die Eingangsfrage beißen sich. Entweder du verwendest für jeden Client einen definierten Thread oder aber du nimmst die asynchrone Variante. Beides zusammen bringt dir außer neuen möglichen Fehlerquellen und komplexen Code nicht viel.

Vllt. noch als kleine Hilfestellung, die meisten Serveranwendungen arbeiten strikt nach dem EVA-Prinzip. Wobei es sinnvoller ist, nicht auf Eingaben zu warten (eigener Thread der blockiert) sondern sich über das Eintreffen informieren zu lassen.

17.09.2010 - 07:51 Uhr

Such mal nach Binding-Redirect(App.Config). Damit sollte das Assembly-Laden klappen. Ob das auch mit deinem Binder funktioniert, musst du probieren.

16.09.2010 - 11:46 Uhr

Ich starte VS mit dem gleichen Benutzerkonto, ich bin jedoch mit meinem Entwicklungsrechner nicht in der gleichen Domäne.

Muss aber, sonst geht das nicht. Der .NET Debugger verlangt eine gewisse Vertrauensbasis. Man kann relativ leicht beim Debuggen über eine ManInTheMiddleAttacke Code einschleusen.

Was du alternativ probieren könntest wäre WinDBG mit sos-Erweiterung

16.09.2010 - 07:48 Uhr

Neben Anfügen an gibts nen Button Auswahl. Dort drin musst du mindest. verwaltet ausgewählt haben. Dies funktioniert allerdings nur, wenn die Vertrauenswürdigkeit des Debuggers festgestellt werden konnte. Entweder muss der Benutzer der VS gestartet hat in der selben Domäne sein wie der Client oder aber eben gleiches Benutzerkonto.

15.09.2010 - 13:12 Uhr

Nein ich meinte im Dialog "Anfügen an Prozess". Da müsste oberhalb der Prozessliste Anfügen an: Verwaltet stehen.

Hast du die Projektmappe in VS geöffnet? Wenn nicht musst du die Symbole vorher laden!

15.09.2010 - 08:50 Uhr

Du hast auch bei zu debuggenden Code auch/nur verwaltet an?

Probier einfach mal aus, beide Firewalls und sonstige Programme wie Symantec/Norton/McAfee haste nicht gesehen zu deaktivieren

14.09.2010 - 08:35 Uhr

Ich verwende hauptsächliche Find-Methoden um Elemente in dieser Liste zu erhalten.

Das hauptsächlich spricht definitiv für eine Synchronisation. Nur wenn du garantieren kannst, dass das eine ReadOnly-Klasse/Collection ist, kannst du lock weglassen.

14.09.2010 - 08:32 Uhr

Kannst du ein Netzlaufwerk mit dem Benutzer verbinden? Haben beide Benutzer jeweils Administratorrechte? Firewall?

13.09.2010 - 13:02 Uhr

Entweder du verwendest 2 Domain Benutzer oder aber du verwendest für Client und Server jeweils den gleichen Benutzer mit gleichem Passwort. Eventuell muss noch die Arbeitsgruppe übereinstimmen.

13.09.2010 - 08:48 Uhr

Wenn deine Anwendung auf "Any CPU" steht und die Interop.Redemption 32 und 64Bit jeweils den gleichen starken Namen (Assemblyname, Kultur, Version, Token) hat sollte das laden eigentlich klappen. Es sollte auch egal sein, mit welcher Variante du die Anwendung kompilierst.

Für DLLImport kann man folgendes verwenden:
const Variable in Generics verwenden

10.09.2010 - 12:22 Uhr

Die Assemblies hol ich mir per Probing und nicht mehr mittels des AppDomain-Events für nicht gefundene Assemblies.

Wenn deine Addins jeweils in einem seperatem Unterverzeichnis liegen, kannst du auch AppDomainSetup.ApplicationBase benutzen.

Damit müssen die Addins nicht mehr in einem Unterverzeichnis der Hauptanwendung installiert werden. Beispiel Outlook.

Aufpassen musst du dann aber bei Bibliotheken die gemeinsam von Host und Addin benutzt werden. Dort musst du dich beim Erstellen der AppDomain an AssemblyResolve hängen und diese aus dem Host-ApplicationPath laden.