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ß
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ß
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 😉
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());
}
}
}
Wenn Du noch ein kompiliertes binary hast, könntest Du es vllt mit einem Reflector versuchen.
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.
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ß
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
Und wenn Du sie jetzt noch hier postest, haben Leute die die Suche bemühen auch noch etwas davon 😉
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ß
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();
}
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.
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.
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
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!
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.
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.
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?
wo hast Du denn das Snippet her? ich denke hier fehlen einfach noch ein paar Infos.
Wenn ich ehrlich sein soll sieht mir das eher nach managed c++ aus..
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.
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ß
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.
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.
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.
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.
Vllt noch ein break; nachdem er den ersten gefunden hat 😉
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.
Du hast ja jetzt auch List<UserInfo> serialisiert hast muss Du natürlich den selben Typ beim Deserialisieren angeben.
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ß
Hallo Saja,
resourcen gibt es viele.. poste doch einmal die genaue Fehlermeldumg bitte.
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 😃 )
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.
Nur eine kurze frage, ist csv gegeben, oder geht es Dir nur darum die objecte zu persistieren?
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
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ß
ja, weil ich die Methode umgedreht habe.. die muss IsNullOrEmpty heissen.. sorry.
Also in der geänderten Zeile kann das nun nicht mehr vorkommen. Wo passiert das denn jetzt?
Ah jetzt ja, bevor dieser Thread geschlossen wird (was nicht mehr lange dauern wird)
ersetze strResult.Length==0 durch string.IsNullOrEmpty(strResult)
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.
Danke euch beiden,
nun muss ich ersteinmal googlen 😃
Ich werde berichten 😃
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 😃
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 😃
Ich danke für deinen Link, hat mir schon gut geholfen. Danke 😃
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
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.
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
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 😃
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?