Die einfachste Variante:
Nimm eine Schleife und warte auf jedes WaitHandle einzeln.
Für weitere Lösungen müsstest du uns zuerst sagen, was du genau tust. Was heisst "auf das Internet zugreifen"? Ladest du irgendwelche Daten runter? WebClient und seine Download...Async (z.B. DownloadDataAsync ) Methoden schon entdeckt?
Grüssli
blurry333 schrieb:
CSharp hat doch auf alle Funktionen von Windows zugriff.
Annahme: Funktionen von Windows = WinAPI
Prinzipiell Ja (via Interop irgendwelcher Art)
Aber macht es auch Sinn? Oft nicht - denn es gibt oft eine ".NET-like" Lösung.
@fr33g
Ich kann auch nur bestätigen, dass man im Studium nur sehr oberflächlich programmieren lernt. Die Leute die solche Kurse nur absitzen können nach ihrem Abschluß nicht besser programmieren als ein ehrgeiziger Teenager. Es werden eben andere Dinge gelehrt als die Details einer Sprache.
Hallo Ihr,
ich hab eine Animation an ein eigenes DependcyProperty gebunden (siehe code) aber an meinen DependencyProperty rührt sich nich, nach "BeginAnimation"??
Was mach ich Falsch? (p.s. ich hab Gegooglet, aber konnte da keine lösung finden)
public Window1()
{
InitializeComponent();
DoubleAnimation da = new DoubleAnimation();
da.From = DateTime.Now.ToOADate();
da.To = DateTime.Now.AddSeconds(10).ToOADate();
da.Duration = new Duration(TimeSpan.FromSeconds(5));
da.BeginAnimation(Window1.OutputTimeProperty, da);
}
public double OutputTime
{
get { return (double)GetValue(OutputTimeProperty); }
set { SetValue(OutputTimeProperty, value); }
}
// Using a DependencyProperty as the backing store for OutputTime. This enables animation, styling, binding, etc...
public static readonly DependencyProperty OutputTimeProperty =
DependencyProperty.Register("OutputTime",
typeof(double),
typeof(Window1),
new UIPropertyMetadata(DateTime.MinValue.ToOADate(), new PropertyChangedCallback((a, b) =>
{
(a as Window1).Output = DateTime.FromOADate((double)b.NewValue).ToString();
})));
Für alles..., vom obersten Control bis hin zum letzten Child hab ich Suspend Layout gemacht. Habe da auch schon ein Testprojekt erstellt, um zu schauen woran das liegt. Dort hab ich nur 2 Panels mit je einen Label, alles Suspended und dann die Location der Labels geändert. Die werden aber trotz dem sofort aktualisiert.
Hallo
Eins hab ich doch dazu zu sagen, es gibt die Möglichkeit einen eigenen Provider zu schreiben, an denn man sich dann hängen kann. Darauf gestossen bin ich, als ich nach einen Sql-Statment Logger fürs EntityFramework gesucht habe. Dadurch bin ich auf folgenden Artikel gestossen:
http://blogs.msdn.com/b/jkowalski/archive/2009/06/11/tracing-and-caching-in-entity-framework-available-on-msdn-code-gallery.aspx
In diesem wird ein Provider erstellt, mit dem man die Kommandos mitloggen kann und auch das ausgewaehlte select Cachen kann. Dies muss man entsprechend nur noch umschreiben (bzw. sich an die Events CommandExecuting, CommandFinished und/oder CommandFailed hängen) und seine eigenen Sql-Statments noch absetzten.
Edit:
Bzw es gibt noch was, Spezial im EntityFramework, an der Entity-Klasse kann man sich ans SavingChanges Event hängen, und dort entsprechend die veränderten Objekte wegprotokollieren. (MyDBEntities in folgenden durch eigenen Namen noch ersetzen)
public partial class MyDBEntities
{
// Diese Funktion wird in allen Konstruktoren aufgerufen, so
// Haengen wir immer an jeder Instanz
partial void OnContextCreated()
{
this.SavingChanges += delegate(object sender, EventArgs e)
{
// Ermittle meine Entitaet
MyDBEntities me = (MyDBEntities)sender;
foreach(var entity in me.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified | EntityState.Deleted))
{
// Debug out.....
}
}
}
}
Bzw. wenn man auf der selben Connection noch ein Sql-Statment absetzten moechte (zB um die selbe SPID zu haben) kann folgender Code benutzt werden:
public partial class MyDBEntities
{
// Diese Funktion wird in allen Konstruktoren aufgerufen, so
// Haengen wir immer an jeder Instanz
partial void OnContextCreated()
{
this.SavingChanges += delegate(object sender, EventArgs e)
{
// Ermittle meine Entitaet
MyDBEntities me = (MyDBEntities)sender;
// Hole die Verbindung
EntityConnection dc = (EntityConnection)me.Connection;
// Dies ist wichtig, hab aber nicht rausbekommen wieso
DbConnection storeConnection = dc.StoreConnection;
// Erzeuge eigenes Commando um die userinit SP abzusetzten
DbCommand command = storeConnection.CreateCommand();
command.CommandText = "userinit";
command.CommandType = CommandType.StoredProcedure;
// Parameter daran noch versorgen
command.Parameters.Add(new SqlParameter("userid", "[param]"));
// Auführen des Kommandos
command.ExecuteNonQuery();
}
}
}
Weitere Informationen zu der Funktion SavingChanges hier zu finden: http://msdn.microsoft.com/en-us/library/cc716714.aspx
MfG Marco
loks schrieb:
Prerequisites im Installer richtig setzen, dann wird bei Installation geprüft ob (mindestens) das benötigte Framework vorhanden ist.
Nur bei der Setup.exe, nicht bei der msi.
Der automatisierte Download ist unzuverlässig.
loks schrieb:
Ebensowenig diskriminieren wir schließlich Leute die Sarkasmus nicht verstehen.
Dein "Hey" und der Smiley haben mir schon gezeigt, dass das Sarkasmus war, jedoch fande ich dein Thread etwas zu schonend formuliert
CStoll schrieb:
Das könntest du auch als Default-belegten Parameter in deiner C#-Funktion festlegen.
Lieber nicht. Der Default-Parameter wird fest in den Code eingebaut, der die Funktion aufruft. Das führt zu unschnen Ereignissen, wenn man den Wert des Default-Parameters ändert, aber den aufrufenden Code nicht neu gegenkompiliert
2AndAHalfBit schrieb:
das dein Beispiel funktioniert, ist unkritisch. Aber was wäre, wenn ich ein Array von deinem Enum habe? Bei der ausgabe des zweiten Arrayelements würde das auch noch passen? Ich habs nun nicht ausprobiert, also glaub ichs dir erstmal.
Enum ist in C# standardmässig Int32 . Falls du einen anderen Typen willst, dann musst du dies angeben.
http://msdn.microsoft.com/en-us/library/sbbt4032.aspx
2AndAHalfBit schrieb:
Eine Enum orientiert sich ja an dem größtmöglichen Wert, ...
In C# nicht.
Grüssli
Hallo,
mal eine Frage: Warum speicherst du dir die Daten nicht in einer Settingsklasse? Die wird von MS schon frei Haus gereitgestellt und ist im Projekt konfigurierbar.
grüße