Hallo,
also mit STRG-Leertaste geht es dann.
Warum aber nicht ohne?
Guten morgen,
seit dem Umstieg auf VS 2010 vermisse ich die Möglichkeit im Watch-Fenster die Intellisensen Unterstützung.
Kann man die irgendwo einschalten?
Verhalten VS2008:
Während des Debuggens eine Variable in das Watch-Fenster ziehen
Danach ging nach dem ich an die Variable (Beispiel: exception.) einen Punkt hinzugefügt habe die Intellisense Liste auf.
Danke schon mal im Voraus
Hallo zusammen,
in meinem aktuellen Projekt muss ich mit einem übergeordneten System (ERP/PPS) über XML kommunizieren.
Am Beginn der Produktion (Auftragsdatei) bekomme ich eine XML-Datei die ich zerlegen und in meine relationale Welt (SQL Server 2008 R2) überführen muss.
Während der Produktions wird alle 2 Sekunden ein Teil fertig. In diesem Takt müssen alle Produktionsrelevanten Daten in eine XML-Datei (Produktionsdatei) exportiert und dem übergeordneten Sysetm zu Verfügung gestellt werden.
Datenvolumen:
Auftragsdatei ca. 20kb
Produktionsdatei ca. 30kb ==> alle 2 Sekunden!
Nun mache ich mir Gedanken über die Umsetzung und wollte mal bei den Profis nach fragen welche Vorgehensweise am sinnvollsten/performantesten ist.
Das Einlesen der Auftragsdatei ist zeitlich unkritisch. Das Schreiben der Produktionsdateien muss relativ schnell erfolgen (2s Takt).
Hoffe Ihr könnt mir helfen wie man da am Besten umsetzt.
Vielen Dank!
- Beide Exceptions dienen dem leichteren Auffinden von Programmierfehlern. Beides Exceptions sind entsprechend normalerweise nicht dazu gedacht, um zur Laufzeit behandelt zu werden.
Sehe ich auch so.
Wenn man sich mal ne weile mit dem Exceptionhandling beschäftigt, stellt man fest, daß die Sache (scheinbar) oft extrem vernachlässigt wird. Man findet zwar überall Beispiele wie es prinizipiell funktioniert aber sehr wenig darüber wie man ein gutes Exceptionhandling-(Design) erstellt.
Danke für Eure Untersützung! 👍
Hallo,
danke für die vielen Antworten.
Ich fasse mal zusammen.
Gruß
Ah ich verstehe!
Und was für eine Exception werft Ihr dann bei folgendem code
public void DoSomething()
{
Object test = Factory.CreateObject()
if (test == null)
{
throw new ????Exception()
}
}
ArgumentNulLExcpetion passt hier ja nicht mehr wirklich oder?
Hallo,
ich hab mal ne Frage zum Exceptionhandling
public void Test(object param)
{
//some checks
if (param == null)
{
throw new ArgumentNullException("param");
}
// do something
Console.WriteLine(param.ToString());
}
Macht das überprüfen des Pramaters auf null überhaupt sinn?
Würde in der Zeile
Console.WriteLine(param.ToString());
nicht sowiese so eine NullReferenceExcpetion geworfen werden?
Welchen Vorteil hat die ArgumentNullException zur NullReferenceExcpetion?
Danke
Hallo,
ich kann leider nicht bei beiden Controls die selbe Quelle nehmen, da ich in der Combobox alle zu Verfügung stehenden Werte anzeige.
Erklärung
ListView:
_
Spalte A : SpalteB
Int16 : 2
Int32 : 4
Int64 : 8_
ComboBox (besitzt alle Werte die für Spalte A möglich wären):
_
Int16
Int32
Int64
String
Byte
..._
Die Datenquelle für die ListView und die Datenquelle für die ComboBox sind unterschiedlich!
Bei Auswahl einer Row in der ListBox wird der entsprechende Wert in der ComboBox ausgewählt.
Was mir zu meinem Glück jetzt noch fehlt, ist daß wenn ich in der ComboBox einen neuen Wert auswähle diesen dann an das selektierte Item in der ListBox übergeben wird.
Gruß
Hallo Experten,
habe nun endlich etwas Zeit gefunden mich mit der WPF zu beschäftigen und komme an einer Stelle nicht weiter.
Habe eine ListView an die habe ich eine Abfrage gebunden (listView.ItemsSource). Bei Auswahl einer Row in der ListView wird unter anderem ein Eintrag in einer ComboBox ausgewählt. Diese Comobobox wurde ebenfalls über ItemSource gefüllt (andere Datenquelle als die ListView).
Damit in der Combobox der richtige Eintrag ausgewählt wird habe ich der Property DataContext der Combobox die ListView übergeben.
Das ganze funktioniert soweit auch.
Nun möchte ich aber, daß bei Auswahl eines anderen Wertes in der Combobox dieser Wert auch in der Listview geändert wird. Die ListView hat mehrere Spalten. Und genau eine Spalte finden sich auch in der ComboBox wieder.
Ich stelle mir das quasi so vor:
BindingOperations.SetBinding(this.listView1, ListView.SelectedItemProperty.Spalte, binding[counter]);
Nur lässt sich das so nicht übergeben.
Geht dies auch über Datenbindung? Wenn ja wie? Oder muss ich das über Events machen?
Danke
Hallo,
ich arbeite mich gerade durch das Buch "Microsoft .Net 2.0 Anwendungen debuggen". Der Autor John Robbins hat da meiner Meinung nach eine sehr interresante FxCop regel vorgestellt: "AvoidBoxingAndUnboxingInLoops".
Diese FxCop-Regel findet Boxing/Unboxing Operationen in Schleifen welche aus Perofrmancegründen unbedingt vermieden werden sollen.
Hier ist der Download:
http://www.wintellect.com/Downloads/Debugging.zip
Gruß LordBauer
@herbivore
ich habe mich jetzt weiter eingelesen (Microsoft.Net Framework-Programmierung in C# von Jeffrey Richter).
Da steht, daß es nichts dagegen einzuwenden gibt System.Exception abzufangen und innerhalb des catch-Blcoks geeigneten Code auszuführen, solange Sie die Ausnahme am Ende dieses Blocks erneut auslösen und zwar am Besten mit throw ohne Parameter, da dadruch der Stacktrace nicht verändert wird.
Ok die Argumente leuchten mir ein.
Nachteil: Unmengen an catch-Blöcken und unübersichtlier Code. Richtig?
Hallo,
mir ist das immer noch nich ganz klar.
Gehen wir mal davon aus ich habe eine Methode die irgendetwas tut. In der Methode können ca. 20 verschiedene Exceptions auftreten. Bei allen Exceptions möchte ich das selbe tun. Warum kann ich da dann nicht die General-Exception fangen und einmal die Aktion definieren?
Gruß
Hallo,
gehen wir mal davon aus ich habe zwei Programmteile (Assemblies) A und B.
A ist der Einstiegspunkt. B ist einfach ein Programmteil welcher über ein Interfaces (Contract First Design) angesprochen wird.
Passiert jetzt in B ein unerwarteter Fehler und A würde die Excpetion fangen sind unter Umständen ja wichtige Informationen nicht mehr vorhanden die ich eventuell loggen möchte. Beispiel:
Fange ich die General Exception in B kann ich mir noch alle Informationen(auch private) in ein Log-File schreiben. Selbst wenn ich den Fehler selbst nicht behandle bzw. behandeln kann.
Fange ich die General Exception in A habe ich nicht mehr alle Informationen sondern nur diese die über den Contract verfügbar sind.
Gruß
Hallo,
ich stolpere immer wieder über die MS-Regel (This rule is similar to FxCop rule 'Do not catch general exception types', CheckId CA1031), daß keine General-Exceptions gefangen werden sollen. Warum ist mir leider nicht ganz klar.
Ich programmiere meistens folgendes:
try
{
}
catch (System.IO.FileNotFoundException exception)
{
//do something
...
throw new SenderException(exception.Message, exception);
}
catch (Irgendeine exception)
{
//do something
...
throw new SenderException(exception.Message, exception);
}
catch (Exception exception)
{
//do something
...
throw new SenderException("unerwarteter Fehler", exception);
}
Fxcop meckert dann immer ich soll keine General Exception fangen.
SenderException ist dabei eine eigene Exceptionklasse.
Alternative wäre folgendes:
try
{
}
catch (System.IO.FileNotFoundException exception)
{
//do something
...
throw new SenderException(exception.Message, exception);
}
catch (Irgendeine exception)
{
//do something
...
throw new SenderException(exception.Message, exception);
}
catch
{
//do something
...
throw new SenderException("unerwarteter Fehler");
}
Aber dann fehlt mir die Information der InnerExcpetion.
Wie macht Ihr das?
Hallo,
danke für die Antworten. Werde es dann "händisch" lösen.
Gruß
Hallo,
der SQL-Server hat für solche Probleme einige Tools zur Hand.
Damit solltest Du auf die meisten Deadlocks identifizieren können.
Hallo,
ich kann Dir nicht gezielt weiter helfen, aber ein Bekannter von mir hat vor kurzem eine Software (C#) geschrieben welche Log-Dateien analysiert. Diese hat er über den Windows Indezierung-Dienst aufbereiten lassen. Man kann da aus .net drauf zugreifen. Der Weg ist also richtig. Wie es ganau funktioniert kann ich Dir leider aber nicht sagen.
Guten Morgen,
folgende Situation:
Wir haben einen Leitrechner der die Produktion an einer Anlage begeleitet. Dieser Leitrechner erhält von der Anlage verschiedene Daten die in der MS SQL SERVER (2005,2008) Datenbank gespeichert werden.
Für Statistiken usw. können diese Daten ausgewertet werden.
Nun möchten wir gerne Daten die nicht mehr zur aktuellen Produktion gehören in eine andere Datenbank "replizieren" und auf der eigentlichen Datenbank löschen.
Letzt endlich so etwas wie eine Replikation wobei das Löschen von Datensätzen nicht repliziert werden darf. Die neue Datenbank soll im Prinzip die History sein und in der aktuellen nur noch die Daten von der aktuellen Produktion oder den letzen paar Tagen, eben eine Teilmenge der Replizierten.
Geht sowas mit dem SQL Server?
LordBauer
Hallo,
so damit alle anderen die die CCR nutzen wollen nicht länger suchen müssen.
Einfach MSRobotics herunterladen und dann die Assembly Microsoft.CCR.Core referenzieren.
Gruß
LordBauer
Hallo,
warum dauert der Disconnect so lange (1 Minute oder mehr). Vieleicht kann mir ja jemand auf die schnelle helfen.
public void DoConnect(String ipAdress, Int32 port)
{
try
{
if (client.Client.Connected == true)
{
client.Client.Shutdown(SocketShutdown.Receive);
client.Client.BeginDisconnect(true, new AsyncCallback(DisconnectCallback), client.Client);
disconnectDone.WaitOne();
}
client.BeginConnect(ipAdress, port, new AsyncCallback(ConnectCallback), client);
}
catch(SocketException excpetion)
{
form.AddMessage(excpetion.Message);
}
}
public void DisconnectCallback(IAsyncResult ar)
{
Socket socket = (Socket)ar.AsyncState;
socket.EndDisconnect(ar);
disconnectDone.Set();
}
Hallo,
war letztes Jahr auf der Prio und da wurde das CCR & DDS Toolkit angekündigt.
http://www.microsoft.com/ccrdss/
Leider kann man unter dem Link nicht mal eine Testversion runterladen. Und 400$ ohne es testen zu können ist ja nicht gerade der Knaller. Klar könnte ich jetzt MsRobotics installieren aber das will ich nicht.
Nicht mal unter meinem MSDN Account kann ich eine Testversion runterladen.
Weiß jemand ob es eine Testversion gibt?
Danke.
LordBauer
Hallo,
das Problem ist, daß diese Applikation gekauft wurde und ich somit keinen Einfluss auf deren Code habe.
Gruss
Hallo,
ich rufe aus einer Applikation (Zenon, Copadata) meine Applikation auf. In der Main Methode starte ich dann meine Form wobei die Applikation (Zenon) als Vater aübergeben wird.
Die Form wird mit ShowDialog gestartet.
Nun habe ich den Effekt, daß die Applikation (Zenon) sich hin und wieder den Fokus nimmt. Dabei kommt diese Applikation (Zenon) aber nicht in den Vordergrund sondern mein Programm bleibt weiterhin sichtbar.
Dies hat zur Folge, daß wenn ich mich zum Beispiel in einer Combobox befinde und ich etwas auswählen möchte, die Combobox einfach zu geht, da der Fokus Weg geht.
Wie kann ich es erzwingen, daß mein Prgramm den Fokus behält?
Meine Idee war es auf LostFocus zu reagieren, aber dies hilft dem Benutzer denke ich wenig, da seine bereits getätigte Auswahl in der Comobox trotzdem verloren geht oder?
Vielen Dank vorab!
LordBauer
Hallo,
mit System.Enviroment.Exist funktioniert es. Vielen Dank für den Tip
Gruss
LordBauer
Hallo,
ok damit werde ich es mal ausprobieren. Melde mich dann wieder.
Hallo,
im daran denken und zwar so lange bis man es nicht mehr vergisst.
Ein STRING ist unveränderlich.
Soll heißen String-Operationen egal welcher Art sind sehr langsam. Drum wie oben bereits beschrieben diese Aufgaben immer das System erledigen lassen oder auf andere Klassen wie StringBuilder ausweichen.
Gruss
LordBauer
Morgen herbivore,
das war auch mein erster Ansatzpunkt! Nur leider hat der nicht weiter geholfen. Mein Dienst wartet jetzt bis der SQLSERVER gestartet wurde doch die Datenbankanfrage führt trotzdem zur einer Exception, da die Verbindung zu der speziellen Datenbank noch nicht hergestellt wurde.
Prinzipiell hast Du recht und ich sollte dort nach dem Problem suchen (aber dafür ist mal wieder keine Zeit).
Dadurch kam ich erst auf die Idee mit dem Neustarten des Dienstes.
Danke für Deine Antwort
LordBauer
Hallo,
@norman_timo
Ich glaube die Application Klasse habe ich nur bei einer Forms (bzw. GUI)-Anwendung. Beim meinem Dienst gibt es das nicht.
Ich habe schon versucht bei der Main Methode einen Rückgabewert zu setzten, doch dieser wird auch nicht ausgewertet.
Gruss LordBauer
Hallo,
vielen Dank für Deine Antwort.
Ich werde es dann wohl um ganz sicher zu gehen zur Laufzwit überprüfen. Kostet zwar etwas Performance (Reflection) aber egal.
Gruss
LordBauer
Hallo,
ich habe einen Dienst unter .Net 1.1 aufgesetzt. Diese Dienst startet automatisch mit dem Systemkonto beim Rechner Neustart. Unter Umständen kann es passieren, daß dieser Dienst noch nicht richtig mit der Datenbank kommunizieren kann.
Im Dienst Manager kann man zwar definieren, was beim Fehler eines Dienstes passieren soll (Neustart des Dienstes) nur leider scheint das mit .NET 1.1 Diensten nicht zu funktionieren, da zwar der Dienst mit einem Fehler beendet wurde aber der Service Manager hat das fehlerhafte beenden (Exception) nicht als Fehler in dem Sinne interpretiert, daß er den Fehlerzähler hoch gesetzt hätte.
Seit .Net 2.0 gibt es eine ExitCode Property die man auf ungleich 0 setzen muss, damit der Service Manager seinen Fehlerzähler für diesen Dienst hoch setzt.
Kennt jemand eine Möglichkeit für .Net 1.1?
Gruss
LordBauer
Hallo,
ich habe ein kleines Problem. Ich möchte gerne, dass Nutzer meines Interfaces dazu gezwungen werden, die im Interface angegeben Attribute zu verwenden.
Beispiel:
Ich möchte zum Beispiel, dass ich im Interface angeben kann, dass alle die mein Interface nutzen das Attribut [Serializable] verwenden.
Bisher habe ich mir mit abstrakten Klassen geholfen. Zufrieden bin ich damit aber nicht.
Vielen Dank
LordBauer
Hallo,
ein Dienst kann weder einer Console noch eine Form oder ähnliches darstellen, bzw. das wird vom System nicht ermöglicht (ich habe es zumindest noch nicht geschafft bei einem Dienst eine Consolenfenster zu öffnen.).
Um Deine gewünschte Funktionalität zu erreichen brauchst Du zum einen, den Dienst mit der Logik und zum anderen eine weitere Applikation (Form) die mit dem Dienst kommuniziert, bzw. Ausgaben vom Dienst empfängt.
Der Weg der Kommunikation steht Dir dabei natürlich offen (Files, TCP, UDP, WCF usw).
Gruss
LordBauer