Laden...

Forenbeiträge von AtzeX Ingesamt 217 Beiträge

30.08.2006 - 14:45 Uhr

Noch mal ich.

Wie bekomme ich denn in der Methode "xxx" den Handle auf den zu übergebenden EventHandler, den ich der Methode em.SetEventAsRaised" übergeben muss.

Für jeden EventHandler ne Membervariable wäre doch nicht mehr flexibel.

*wirr*

30.08.2006 - 14:25 Uhr

naja, in diesem Fall einfach durch Verwendung einer static-Variable Weil sowohl "Main" als auch "xxx" 'static' sind.

Normalerweise durch Verwendung einer Instanzvariable. Weil dann sämtliche Ereignis-Behandlungs-Routinen non-static members wären und damit Zugriff auf die Instanzvariable hätten.

Richtig. Da ist das Brett. Danke dir. 😉

30.08.2006 - 14:13 Uhr

Hi.

Theorie und Praxis liegen doch irgendwie auseinander, hehehe.
Ich habe jetzt mal Folgendes erstellt um mal mit deiner Klasse zu spielen:

class Program
{
	static void Main(string[] args)
	{
		Click cl1 = new Click();
		EventManager em = new EventManager();

		EventHandler eh = new EventHandler(xxx);
		cl1.OnClick += eh;

		em.AddEventHandler(eh);
		cl1.NotifyClick();
		Console.WriteLine("Press any key");
		Console.ReadKey();
	}

	static void xxx(object o, EventArgs e)
	{
		Console.WriteLine("xxx");
	}
}

public class Click
{
	public event EventHandler OnClick;
	public void NotifyClick()
	{
		EventArgs e = new EventArgs();
		if (!(OnClick == null))
			OnClick(this, e);
	}
}

Ich frage mich nur, wie nun aus der Methode "xxx" heraus die Methode "em.SetEventAsRaised" aufgerufen werden kann?

Ich suche noch das Brett vor meinem Kopf...

29.08.2006 - 16:20 Uhr

@Lord:
Das werde ich mir mal ansehen.

@Herbivore:
Ein Pentium M 1700.

@Svenson:
350MB von 1GB sind in Beschlag.

@All:
Ich habe jetzt mal auf Grund der Erkenntnisse mit dem Hello-World-Programm länger gesucht und mit anderen Rechnern verglichen.
Tatsächlich startet das HelloWorld-Progrämmchen auf anderen Rechnern deutlich schneller als auf meinem.
Ab dem zweiten mal sogar auch schon fast verzögerungsfrei.

Nach Google-Recherche mit den Stichworten "Windows-XP Caching" habe ich diverse SnakeOil Artikel gefunden, in denen beschrieben wird, wie man seinen Rechner 'tunen' kann.
Und tatsächlich: Ich hatte so eine Modifikation in meiner Registry aktiv, die den Hauptspeicher optimieren soll: "AlwaysUnloadDll" (der Name ist wirklich Progamm, hehehe).
Nachdem ich die entfernt und neu hochgefahren habe ist das Verhalten deutlich besser.
Sagen wir mal 1Sekunde Verzögerung beim Starten und kaum noch Plattenaktivitäten.
Um es verzögerungsfrei hinzubekommen, muss ich eine Instanz des Tools laufen lassen. Die folgenden Instanzen sind dann wirklich verzögerungsfrei.

Wie ich mir diesen Registry-Patch eingefangen habe ist mir schleierhaft.

Ich suche mal weiter.
Vielleicht bekomme ich es ja noch besser hin.

Gruß und Dank,
AtzeX

29.08.2006 - 14:51 Uhr

Hallo Experten.

Ich habe eine single-Assembly-Applikation, die ich am Tag sicherlich 20-30 mal starten muss.
Ehemals war es eine VB6 Applikation, welche sich in ca. 1 Sekunde starten lies (immer noch lässt).
Das ganze konvertiert zu einer C# 2.0 Applikation dauert 5-10 Sekunden.
Ich habe schon sehr viel versucht zu optimieren:

  • Den Code natürlich.
  • Unnötige Referenzen entfernt.
  • Strong Name verwendet.
  • Assembly im GAC installiert.
  • NGEN
    Alles in allem kaum Verbessrung.

Also habe ich mal eine kleine "Hello World" WinForm-Anwendung erstellt (ein Form mit einem Label, mehr nicht) um die Basics auszuloten.
Ebenfalls alle obigen Optimierungen angebracht.
Aber:
Der Startup (auch mehrmalig nacheinander) beträgt ca. 3 Sekunden.
Schneller bekomme ich es einfach nicht hin.

Das EINZIGE was wirklich hilft und den Startup auf ca. 1Sekunde verbessert ist dass ich Visual Studio 2005 zuvor starte und geöffnet lasse (nackt ohne Projekt reicht).

Dann habe ich auch deutlich weniger Festplattenzugriffe.

Schließe ich nun VS und starte die App erneut, so ist es wieder langsam.

Also liegt es am Laden diverser Komponenten der .Net-Umgebung.

Hat jemand eine Idee, wie ich rausfinden kann, welche das sind, bzw. wie ich Windows ein besseres Caching-Verhalten beibringen kann?

Gruß und Danke im Vorraus,
AtzeX

29.08.2006 - 13:15 Uhr

Mal schnell konket gefragt:
Geht so etwas auch?
Wäre dann alles etwas abstrakter zu betrachten.
Ich habe mal drüber nachgedacht, aber leider nicht die richtige Idee gehabt.

29.08.2006 - 10:54 Uhr

Danke euch Beiden!
Jetzt kann ich auch folgen. 😉

Ich habe wohl etwas zu kompliziert gedacht.

Momentan ist es ja so, dass du eine Instanz von "EventManager" erstellst, deine Events reinflipperst und dann 'außen' die Events abfängst und dann jeweils die Methode "SetEventAsRaised" dafür aufrufst, richtig?

Ich vermutete irgendwie eine Lösung, die ohne explizites Aufrufen der Methode "SetEventAsRaised" auskommt.
Quasi dass die in der Klasseninstanz von "EventManager" registrierten Events das eigenständig machen.
Oder bin ich da zu weit vor-gallopiert? 🙂

29.08.2006 - 07:47 Uhr

Wie wäre es mit einem Dictionary <EventHandler, bool>?

Hmmm, was ist denn der Vorteil auch die Eventhandler mit reinzunehmen?
Irgendwie hats bei mir noch nicht <click> gemacht...

18.08.2006 - 14:41 Uhr

Baue dir doch einfach das .NET 2.0-Konfig-Modell nach. Kostet 5 Min Zeit und geht auch auf 1.1!

Das hört sich SEHR interessant an!
Hast du da ein Beispiel zu?
Ich bin da leider noch nicht so firm drin.

Hintergrund:
Ich möchte Parameter, welche ich bisher in INI-Dateien abgelegt habe nun gerne nach dem neuen 2.0er-Schema ablegen.

[pre][SYSTEM]
TEST=Wert

[DEFAULTS]
AAA=Wert1
BBB=Wert2
CCC=Wert3[/pre]

Was ich nun benötige ist, dass ich weiterhin Sektionen verwenden kann.
Die Sektion "DEFAULTS" zum Beispiel muss ich iterieren.
Ich weiß also nie genau, welche Werte mich erwarten.
Soweit ich bisher rausgefunden habe, geht das leider nicht, oder?

Deshalb interessiert mich dein Prizip.
Vielleicht kann ich das dazu verwenden?

Was auch toll wäre, wäre das einfache ablegen einfacher Werte wie zum Beispiel diese Liste

[pre][LISTE]
WertA
WertB
WertC
[/pre]

um sie beim Start der Anwendung auch einfach zu iterieren.

Kann mir da jemand helfen?

Gruß,
AtzeX

14.08.2006 - 09:14 Uhr

Hmmm...
naja, hab ich auch schon drüber nachgedacht.
Aber die SUOs hätte ich schon gerne, da ich eher alleine an Projekten arbeite, dafür aber unter Umständen auf unterschiedlichen Rechnern.
Ist recht nützlich, wenn ich dann auch die Einstellungen 'mitnehmen' kann.

Aber wie es scheint, gibt es in VS keine Möglichkeit das Verhalten zu ändern, wie?

13.08.2006 - 21:00 Uhr

Hallo.

Kann ich irgendwie verhindern, dass VS 2005 die SUO-Dateien mit dem Hidden-Attribut versieht?
Ich nutze einen automatischen Abgleich, der leider mit versteckten Dateien nicht umgehen kann.

Wäre klasse.

Gruß,
AtzeX

03.08.2006 - 22:04 Uhr

Vielen Dank für deine 'Frische' Antwort . 😉

Schon klar, was du sagst, aber man muss doch nicht grundlegende Fehler wiederholen, bzw. kann doch Tipps Anderer zu Hilfe nehmen, oder?

Sicherlich gibts es Verfahrensweisen, die sich als wirklich empfehlenswert (vielleicht sogar optimal) erwiesen haben?

Ich kann mir nicht vorstellen, dass da noch nie etwas drüber geschrieben wurde.

Wie macht ihr das denn?

02.08.2006 - 16:00 Uhr

Hallo.
Ich bin gerade dabei eine etwas größere Projekt umzusetzen.
Nachdem ich nun schon etwas probiert habe, stelle ich mir die Frage, wie ich das ganze besser organisieren könnte.
Erstellt werden mehrere Assemblies, die zusammenspielen sollen.

Gibt es irgendwo gute Design-Vorgaben/-Richtlinien, wie man ein solch großen Projekt organisieren sollte?

Themen, die mich da beschäftigen sind z.B.:

  • Namespace-Struktur
  • Assembly(Projekt)-Namen
  • Klassennamen
  • Verzeichnisstruktur (Unterverzeichnisse)

Wie bringt man das ganze möglichst übersichtlich in Einklang?
Wie macht ihr das?

01.06.2006 - 10:53 Uhr

Auch eine wirklich interessante Seite.
Danke dir!

Gruß,
AtzeX

31.05.2006 - 15:35 Uhr

Holla die Waldfee, genau so was habe ich gesucht.

Jetzt ringe ich nur noch mit meinem Gewissen, ob ich sie denn auch anwenden werde. 😉

Danke auf jeden Fall.

31.05.2006 - 11:55 Uhr

Hallo herbivore,

danke für deinen Reply.

Hmm, schade eigentlich.

Scheinbar erfindet jeder das Rad neu, aber das hat durchaus einen Vorteil:
Man lernt die Klassenbibliothek besser kennen. 😉

Na, dann werde ich halt auch mal 'wühlen'...

30.05.2006 - 10:08 Uhr

Da ich neu hier bin, werfe ich erst einmal ein großes Hallo in die Runde.

Mein Anliegen:
Ich stelle nach und nach meine VB6 Programme auf C# 2.0 um.
Da ich in der Vergangenheit natürlich auch regen Gebrauch von Windows-API Routinen gemacht habe, mich aber nun davon weitestegehend trennen möchte, suche ich, um mir das Leben zu erleichtern, falls vorhanden eine Art Gegenüberstellung bzw. Ersatzliste von Windows-API Routinen zu .Net-Klassenbibliothek-Mitgliedern.

Ich vermute mal, dass im Laufe der .Net-Jahre solch eine Liste irgendwo 'gewachsen' ist, oder?

Leider finde ich nichts im weiten Internet.

Wäre nett, wenn ihr mir weiterhelfen könntet.

Gruß,
AtzeX