Laden...
Avatar #avatar-3200.jpg
unconnected myCSharp.de - Member
Softwareentwickler Oerlinghausen/NRW Dabei seit 13.08.2006 849 Beiträge
Benutzerbeschreibung

Forenbeiträge von unconnected Ingesamt 849 Beiträge

21.09.2012 - 17:19 Uhr

Hmm,

was Du vorhast hört sich für mich nach kreisverweis an.. Vllt solltest Du deine Struktur nochmals überdenken. Hauptprogramm -> ruft dll auf -> ruft Datenquelle von Hauptprogramm auf?

Warum muss die edmx Datei überhaupt im Hauptprogramm sein? wäre es nicht sinnvoller sie in eine eigene DataAccess Dll zu legen und von Hauptprogramm und dll darauf zuzugreifen?

Es gibt auch T4 Templates die den Context und Datenklassen erzeugen, dann ist auch egal wo die edmx Datei liegt.

Gruß

19.09.2012 - 22:00 Uhr

Hallo azzidodabass,

das standard verhalten ist, das Verweise auf dlls mit in das Programmverzeichnis kopiert werden. Der Pfad den Du uns hier zeigst, ist nur ein hinweis für den Compiler wo er die dll finden kann.
Dlls aus dem Gac müssen erst in den Verweis Propertys auf "Copy local" umgestellt werden, damit die dll kopiert wird.

Du musst fasst alle Dateien die Du im Release oder Debug verzeichnis findest kopieren und auf dem Client rechner in einen Ordner kopieren. (exe,dll,.config etc)

Gruß

18.09.2012 - 22:16 Uhr

Wenn ich dich richtig verstanden habe musst Du einen neuen Thread starten und den dann per SetApartmentState(ApartmentState.STA) umstellen.

Die Klasse Thread sollte in der Doku zu finden sein 😉

14.09.2012 - 15:17 Uhr

Hallo,

ich habe da ein Problem..

und zwar habe ich eine externe ActiveX dll. Wenn ich eine bestimmte Klasse davon instanziere, wird ein externer Prozess (lppa.exe) gestartet. Dummerweise schmieren die Dinger in regelmässigen Abständen ab. Wenn Sie sich einfach verabschieden würden wäre ja alles in Ordnung.. aber sie bringen eine Message Box hoch, die leider meine Prozesse so lange Blockieren, bis Irgendjemand auf ok drückt oder der Prozess gekillt wird.

Da nun ja mehrere Prozesse davon laufen habe kann ich sie leider nicht alle killen 😦 deshalb habe ich einen Thread gestartet der alle 500ms schaut ob ein Process mit Namen lppa ein Window Handle hat. Funktioniert eigentlich ganz gut, bis auf die Tatsache das mir in dieser Funktion massenweise Handles verloren gehen.. (Laut ClrProfiler) und zwar in dem Property MainWindowHandle von der Process Klasse.

Kann mir jemand erklären warum das so ist?


private void KillWerFault()
        {
            while (true)
            {
                Thread.Sleep(500);
                Process[] processes = null;
                try
                {
                    processes = Process.GetProcesses();
                    processes.Where(data => data.ProcessName == "WerFault" || data.ProcessName.Contains("dw20") || (data.ProcessName == "Lppa" && data.MainWindowHandle != IntPtr.Zero)).ForEach
                        (data =>
                             {
                                 log.Debug(string.Format("Kill Evil Process {0}",data.ProcessName));
                                 try
                                 {
                                     data.Kill();
                                     log.Debug("Killed!");

                                 }
                                 catch(Exception ex)
                                 {
                                     log.Error(string.Format("Killing Process failed: {0}",data.ProcessName),ex);
                                 }
                             });
                }
                catch(Exception ex)
                {
                    log.Debug("Fehler bei Kill Prozess:",ex);
                }
                finally
                {
                    if (processes != null)
                        processes.ForEach(data => data.Dispose());
                }


            }
        }

04.09.2012 - 21:35 Uhr

Wenn Du noch ein kompiliertes binary hast, könntest Du es vllt mit einem Reflector versuchen.

29.08.2012 - 11:17 Uhr

Das Problem ist wohl das die Testumgebung die Exceptions abfängt und diese für die Testauswertung benutzt.

Somit sind für das VS wohl alle Eceptions "handled". Ein workaround wäre wohl ein try catch um den Test zu machen und nen Debug.Break() in den catch block zu setzten.. wobei du dann natürlich auch wieder den Punkt verpasst wo die Exception eigentlich fliegt.

28.08.2012 - 10:17 Uhr

Hallo MusiuminCapitiss,

drücke einmal Crtl+D,E. Beim Punkt Common Runtime Exceptions machst den Haken bei "User unhandled weg und bei thrown rein.

Dann sollte das VS bei jedem Fehler halt machen.

Gruß

27.08.2012 - 22:11 Uhr

Hallo Keanu,

vielleicht solltest Du aber auch ganz abstand zu Forms nehmen, und dir WPF und das MVVM Model anschauen.

Forms ist.. fertig. Es wird nicht mehr weiterentwickelt und wird die Einschränkungen behalten die bis jetzt hat. Es wird langsam weniger und WPF (und nun kommt auch noch Metro mit windows 8 und phone) immer mehr.

Forms ist sicher noch einen Blick Wert, aber als Anfänger würde ich mich nun nicht mehr damit beschäftigen/belasten, es sei denn es wird verlangt.

Grüße

30.07.2012 - 14:33 Uhr

Und wenn Du sie jetzt noch hier postest, haben Leute die die Suche bemühen auch noch etwas davon 😉

27.07.2012 - 14:15 Uhr

Hallo monoid,

Das liegt daran du höchstwarscheinlich daran das Line kein struct sondern eine class -> referenztyp;

wenn Du also sowas tust:


array1[0] = new Line(x,x,x,x);
array2[0] = array1[0];

Dann wirst Du mit array2[0].X = 0; immer auch den Wert in deinem array[0] ändern. weil Die referenz die in array1[0] und array2[0] gespeichert ist, dieselbe ist.

Allerdings muss ich sagen das ich deinen Code extrem verwirrend finde.. und ich Dir die genaue Stelle ohne tiefer gehende Code Diagnos nichtmal zeigen kann..

Gruß

19.07.2012 - 07:47 Uhr

Nur so als Schlusswort.. Du kannst auch die explizite Methode aufrufen. Müsste dann halt nur so aussehen:


public IEnumerator<MailServer> GetEnumerator()
        { // <- Hier wurde die Anweisung markiert, die als nächstes ausgeführt werden sollte.
            return ((IEnumerable)this).GetEnumerator();
        }

19.07.2012 - 06:51 Uhr

public IEnumerator<MailServer> GetEnumerator()
        { // <- Hier wurde die Anweisung markiert, die als nächstes ausgeführt werden sollte.
            return this.GetEnumerator();
        }

Hallo Palladin007,

In GetEnumerator rufst Du selbige wieder auf, das kann nicht gut gehen.. Du wolltest wahrscheinlich IEnumerable.GetEnumerator() aufrufen.

13.07.2012 - 09:37 Uhr

Hmm der Compiler kann doch nicht einfach Code weg optimieren nur weil Du den Ctor einmal mit constanten parametern aufrufst.. Was passiert wenn ich deine Klasse von Aussen instanziere?

Selbst wenn der compiler so etwas kann, würde selbst der Aufruf deiner Log Methode ihn davon abhalten.

12.07.2012 - 18:21 Uhr

Hallo retnug,

der Denkfehler lag darin das Du dachtest sie würden zur Compile Zeit erstellt. Jede Instanz einer Klasse wird zur Laufzeit erstellt.
Viel Zeit kostet das aber nicht, es Sei denn Du führst irgendwelche komplexen berechnungen im Ctor aus.

Grüße

11.07.2012 - 06:46 Uhr

So wirst Du zumindest immer nur das erste Item finden..

Müsstest das ungefähr so aufbauen:


ListViewItem foundItem;
int nextSearchIndex = 0;
while((foundItem = listView1Suchen.FindItemWithText(textBox1.Text, true, nextSearchIndex ,true)) != null)
{
nextSearchIndex = foundItem.Index +1;
Mach_was_damit();
}


Beware of untested code!

04.07.2012 - 23:01 Uhr

Ich denke hier kommt der alte Spruch zur Geltung: Wer viel misst misst viel Mist..

Schon durch Verankerung von messverfahren wirst Du das Ergebnis verfälschen. Durch Tools wie Profiler wirst Du vllt in die richtige Richtung gebracht, aber diese Ergebnisse wollen auch ersteinmal vernünftig interpretiert werden.

04.07.2012 - 22:48 Uhr

Hmm werden bei ASP.net nicht tatsächlich source dateien veröffentlicht die erst beim ersten aufruf compiliert werden? Werde das morgen einmal checken.. Das würde zumindest den twitter erklären.

22.06.2012 - 10:49 Uhr

Irgendwann fand ich einen Code welcher kein Interface verwendet (wo das Com-Interface ist) sondern nur einen Pointer auf die Com-Instanz.

das meinte ich.. wo hast Du diesen Code gefunden?

21.06.2012 - 20:43 Uhr

wo hast Du denn das Snippet her? ich denke hier fehlen einfach noch ein paar Infos.

21.06.2012 - 19:45 Uhr

Wenn ich ehrlich sein soll sieht mir das eher nach managed c++ aus..

19.06.2012 - 17:55 Uhr

Und falls Du es noch nicht tust.. Fang an Kaffee zu trinken. Unter 2L/Tag wird man von seinen Kollegen gemobbt. Die Kaffemaschine ist meist ein Single point of failure.

15.06.2012 - 16:21 Uhr

Hallo,

Ich würds wahrscheinlich so lösen:



interface A
{
   void Log();
}

Class A : A
{
   public void Log()
   {
      BeforeLog()
      DoLog()
      AfterLog()
   }

   protected abstract void DoLog();
}

Class B : A
{
   protected overide void DoLog()
   {...}
}


Gruß

13.06.2012 - 17:33 Uhr

Das ist eigentlich sogar DIE präferierte Methode um eine client-Server Kommunikation aufzubauen in Silverlight. (laut MS)

Kannst Du den den Service mit dem normalen Browser aufrufen? Meist werden die Methoden nicht angezeigt, weil irgendwas die kommunikation zwischen Server und dem Studio verhindert, oder der Service nicht richtig Konfiguriert oder Aufgebaut ist.

13.06.2012 - 17:26 Uhr

Ich habe Dich zwar nicht ganz verstanden was Du damit bezwecken willst, aber schau Dir mal das new Schlüsselwort an (nicht das zum instanzieren einer Klasse, sondern das zum überdecken von Methoden)

Aber so geschätzt bei 90% der fälle ist das die falsche herangehensweise. Ist auf jeden Fall mit vorsicht zu geniessen. Weil ((Oberklasse)this).ÜberdeckteMethode() würde die der Obeklasse ausführen und this.ÜberdeckteMethode() die der Unterklasse. Immer angenommen wir befinden uns gerade in der Unterklasse.

03.06.2012 - 21:11 Uhr

Eine Frage ist natürlich ob Du gebunden bist.

Wenn nicht glaube ich das Dir tatsächlich sehr viele Türen offenstehen.
Meine Empfehlung ist: tu es!
ABER, natürlich muss man sich den konsequenzen bewusst sein. Ich bin direkt nach dem BIB nach Bayern gezogen, weil ich einfach finanziell keine Wahl mehr hatte. (von NRW)
Wenn Du ähnlich flexibel (oder sogar flexibler) bist.. Der Markt an Softwareentwicklern ist im Moment sehr gut.

03.06.2012 - 12:51 Uhr

Hi, ich würde nicht sagen das es zu spät ist.

Nur Du musst wahrscheinlich was vorlegen können.
Ich bin damals als Industrieelektroniker arbeitslos geworden, und habe ausser Zeitarbeitsfirmen nichts mehr gefunden. Da habe ich einen Strich gezogen Meisterbafög beantragt und bin ans bib in Paderborn gegangen. (bib) 18 Monate lang und hatte danach meinen Staatlich geprüften Informatiker und nen Fachabi als kleines goodie
Das war imho die beste Entscheidung die ich jemals getroffen habe.
Inzwischen habe ich 6 Jahre Berufserfahrung als Softwareentwickler in C#

Ich war damals 28, aber ich weis von mindestens 2 Leuten die auch in der Klasse waren und in deinem Alter waren und heute auch als .net entwickler Arbeiten.

Musst mal schauen ob das vllt. auch was für dich ist.

23.05.2012 - 15:04 Uhr

Vllt noch ein break; nachdem er den ersten gefunden hat 😉

23.05.2012 - 12:01 Uhr

Um wieviele Einträge so übern Daumen reden wir denn hier?

So kannst Du nur in der schon komplett im Speicher vorhandenen Liste suchen.
Sonst musst Du schauen ob linq to xml oder ähnliche Techniken für deinen Fall besser passen.

/Antwort auf edit: Probier erstmal aus 😉 ich denke 9000 einträge sind nicht soviel.

23.05.2012 - 11:43 Uhr

Du hast ja jetzt auch List<UserInfo> serialisiert hast muss Du natürlich den selben Typ beim Deserialisieren angeben.

23.05.2012 - 11:19 Uhr

Hi SeCuRiiTaS,

spar Dir die schleife und serialisiere die Liste Komplett. Dann hast Du den effekt nicht.

Du legst im Prinzip mehrere Serialisierungen in eine Datei. Das macht man normalerweise nicht so. Pro Datei/Stream solltest Du Serialize nur einmal aufrufen.

Gruß

20.05.2012 - 10:18 Uhr

Hallo Saja,

resourcen gibt es viele.. poste doch einmal die genaue Fehlermeldumg bitte.

13.05.2012 - 17:54 Uhr

Bei DP braucht man kein INotifyProperChanged? Ok.. merken.

Aber noch ein Tipp, mach den Output des VS an. hier werden beim Laden des Controls Binding Fehler ausgegeben. (Und den Verbose Level konnte man auch noch hochdrehen, aber frag mich jetzt bitte nicht wo 😃 )

25.04.2012 - 16:16 Uhr

Vllt solltest Du nicht versuchen 100000 einzelne Threads zu starten (bzw die laufenden Threads immer nur mit einer Rechenaufgabe zu befüllen).

Versuch einmal vllt nur 4 oder 8 Threads aufzumachen. Denen Du dann jeweils nur 1/4 oder 1/8 der gesamten Aufgabe gibst.

13.04.2012 - 07:21 Uhr

Nur eine kurze frage, ist csv gegeben, oder geht es Dir nur darum die objecte zu persistieren?

13.04.2012 - 07:09 Uhr

Hallo Cannon,

ich habe das ganze bis jetzt meist mit Events gelöst. Die View hängt sich an die Events des Models und öffnet bei Bedarf den Dialog.
Diese vorgehensweise bringt imho zwar zuviel overhead (an Code) mit, aber ist recht praktikabel.

Grüße

12.04.2012 - 11:59 Uhr

Hallo,

Du kannst Die Datenklassen in eine Assembly auslagern. Diese referenzierst Du dann im Service und im Client. Wenn du dann den Client generierst, kannst Du VS sagen das es doch bitte die vorhanden Klassen benutzen soll.

Gruß

06.04.2012 - 12:58 Uhr

ja, weil ich die Methode umgedreht habe.. die muss IsNullOrEmpty heissen.. sorry.

06.04.2012 - 12:54 Uhr

Also in der geänderten Zeile kann das nun nicht mehr vorkommen. Wo passiert das denn jetzt?

06.04.2012 - 12:47 Uhr

Ah jetzt ja, bevor dieser Thread geschlossen wird (was nicht mehr lange dauern wird)

ersetze strResult.Length==0 durch string.IsNullOrEmpty(strResult)

06.04.2012 - 12:33 Uhr

Hallo,

also ersteinmal [Hinweis] Wie poste ich richtig? bitte lesen.

Ausserdem kann Count niemals null sein, sondern nur 0. <- Großer Unterschied.

äh ok, ausserdem heisst das beim string auch length.

04.03.2012 - 21:46 Uhr

Danke euch beiden,

nun muss ich ersteinmal googlen 😃

Ich werde berichten 😃

04.03.2012 - 19:12 Uhr

Ja, wäre eine Idee.

Aber ich denke ich muss den Server auf der anderen Seite aufmachen. Da der WindowsService nur "hin und Wieder" diese Infos braucht. Wenn das Plugin immer wieder übermitteln würde hätte ich einen rechten overhead. Ich werde mal nach IPC und c++ googlen mal sehen wo ich rauskomme 😃

Falls jemand noch ein paar vorschläge hat, immer gerne gesehen 😃

04.03.2012 - 18:57 Uhr

Hallo, gibt es hier noch jemanden der mit c++ aufgewachsen ist ?

Habe hier ein kleines Problem. bzw brauche ich einen Stubs oder Stichwort in die richtige richtung.

Ich habe ein Programm(nicht von mir) das eine native c++ dll (von mir) als Plugin lädt.
Dummerweise brauch ich die Daten die ich im Plugin über das Hauptprogramm abfragen kann, in einem managed Windows Service.
Wie stelle ich am besten eine Schnittstelle bereit?

Habe bisher nur mit c++ dlls gearbeitet die ich auch selbst geladen habe.
Jetzt muss ich irgendwie von meinem Service aus den richtigen Prozess finden, mich dann dadran hängen, das richtige Object localisieren und dann.. Ja wie dann weiter?

Ich hoffe ich sehe das ganze nicht zu blauäugig 😃

27.02.2012 - 22:11 Uhr

Würd mich mal interessieren..

26.02.2012 - 23:09 Uhr

Ich danke für deinen Link, hat mir schon gut geholfen. Danke 😃

26.02.2012 - 18:09 Uhr

Hallo Leute,

hab mal eine Frage, irgendwie weiß google heute nicht so richtig was ich meine 😃

Ich habe einen WCF Service in einem Windows Service gehostet. Dieser horcht auf einem bestimmten Port.

Dumm ist das die Windows Firewall diesen ersteinmal blockt. Ich suche nun nach einer API die Firewall automatisch zu konfigurieren. Ich hätte erwartet das der User beim Port öffnen gefragt wird.. dem ist aber nicht so. Der User kann ruhig nach Admin rechten gefragt werden.. versuche ja nicht heimlich rauszufunken 😉

Grüße

03.01.2012 - 19:43 Uhr

Nur so in den Wind geschossen, aber ich glaube die Google API braucht das vollständige .Net Framework, nicht nur das Client Profile.

Die einstellungen findest Du als Combobox im Projekt unter Properties. (Target Framework) wenn ich mich recht erinnere.

03.01.2012 - 19:14 Uhr

Hallo winSharp93

Ein foreign Key ist immer eine Parent- (nicht Parents 😉 ) Child Beziehung.
Du würdest Versuchen das ein Datensatz in der Permissions Tabelle mehrere Parents in File Tabelle hat.

Coder007 hat recht, war auch meine erste Idee


Users
- Id (Primary Key)

FILE
-Id (Primary Key)
-Name (etc.)


VERSION
- fileId (Primary Key)
- Version (Primary Key)
- File (byte[])

Permissions
- UserId (Primary Key)
- FileId (Primary Key)
- Permission (primary Key)


wobei du von Permission FileId den foreign Key auf File Id legst und von Version fileId auch auf File Id.

Ich bin da meist ein freund von künstlichen Schlüsseln (wer weis ob einem nicht noch ne andere Combi einfällt wo dann Version und Id gleich sind...) aber das ist wohl persönlicher Geschmack.

edit typo & Permission Feld zum Primary Key hinzugenommen.

Grüße

17.12.2011 - 12:16 Uhr

Danke für die Antworten.

Das mit dem addon werde ich einmal ausprobieren. Danke Sarc

@talla natürlich micht das sinn aber ich mag es halt nicht wenn ich ein fenster konfiguriere und mir zurechtziehe, das es im nächsten moment weg ist. Das mit dem addon wirft hier ganz neue Perspektiven auf 😃

16.12.2011 - 18:08 Uhr

Hallo,

weiß eigentlich nicht wie ich mein Problem weiter beschreiben soll wie ichs schon im Thema gemacht habe.
Mich nervt es halt das wenn ich ins debuggen gehe / oder das debuggen beende ständig irgendwelche Fenster die position wechseln. Und die fenster immer in beiden Modi zu verschieben, ist auch nicht das wahre.
Wenn man nur mit einem Monitor arbeitet, mag das noch Sinn ergeben. Ich arbeite aber inzwischen mit 3..

Weiß jemand rat?