Es gibt im Framework mittlerweile mindestens 4 Timer und anscheinend meinst du den Timer in System.Windows.Forms. Der und das WPF Pendant DispatcherTimer sind die einzigen beiden die Arbeit standardmäßig im GUI Thread ausführen. Die eigentlichen Timer in System.Timers und Sytem.Threading tun das nicht. Beide nutzen Threads aus dem Threadpool für die entsprechende Arbeit. Man brauch nie eigene Threads dazu, man muss nur den richtigen Timer verwenden.
Eigene Threads haben das Problem, das man eigentlich gar keinen genauen Timer bauen kann. Man unterliegt immer dem Wirkungsbreich des Threadschedulers. Die Standardvariante mit Thread.Sleep hat das große Problem das Sleep nur ne Mindestwartezeit angibt, die reale Zeit, wann der Thread wieder rankommt durch den Scheduler, kann wesentlich größer ausfallen. (Okay, bei Schlafzeiten im Sekundenbereich fällts nicht auf :))
Die richtigen Timer benutzen dagegen die Hardwaremöglichkeiten für Timer die jeder PC bietet.
Okay Leute, es funktioniert soweit!
Aber jetzt habe ich ein neues Problem. In den C#-Projekten benutze ich Verweise auf eigene dll's und solche von der Software, von der ich redete. Das funktioniert wunderbar im Zielverzeichnes beim Kompilieren des Projekts, wenn ich die dll's und mein Programm nun aber woanders hinkopiere, dann bekomme ich Fehlermeldungen, weil die Assemblies sich sozusagen im Pfad unterscheiden. Vielleicht kennt ihr solche Probleme ja schon. Gibt es dazu eine einfache Lösung? Ich müsste das ganze ja auf meinem Arbeitsrechner ausführen, der zudem die Zielsoftware und deren dll's an einer ganz anderen Stelle installiert hat.
Viele Grüße,
Michael
Ich nehm sobald ich Concatenieren muss immer ein Builder.
In den seltensten fällen müsste ich das, sei es weil es keine Auswirkungen auf die Performance hat oder es weniger als 3 sind.
Ich mach es einfach damit es simpel ist und man nicht nachdenken muss.
- Warum der Builder da aber hier nicht
- Kann ich da es verbinden oder muss ich den Builder nehmen
lalala - mir alles egal, immer Builder und feddich.
Wenn nicht der Builder bietet sich natürlich auch das string.Format an.
var sql = string.Format("{0} {1} {2}",
"SELECT *",
"FROM dual",
"WHERE 1=1");
So meinte ich, es können nun beliebig viele Booleans gebunden werden.
public class AnyCheckToEnabledConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
return values.Where(i => (bool) i).Count() > 0;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
<Window xmlns:Local="clr-namespace:WpfApplication1">
<Window.Resources>
<Local:AnyCheckToEnabledConverter x:Key="AnyCheckToEnabledConverter" />
</Window.Resources>
<StackPanel>
<CheckBox Content="First" x:Name="firstBox" />
<CheckBox Content="Second" x:Name="secondBox" />
<CheckBox Content="Third" x:Name="thirdBox" />
<Button Content="Demo">
<Button.IsEnabled>
<MultiBinding Converter="{StaticResource AnyCheckToEnabledConverter}">
<Binding Path="IsChecked" ElementName="firstBox" />
<Binding Path="IsChecked" ElementName="secondBox" />
<Binding Path="IsChecked" ElementName="thirdBox" />
</MultiBinding>
</Button.IsEnabled>
</Button>
</StackPanel>
</Window>
So bleibt die View Arbeit auch wirklich arbeit der View.
(In MVVM umgebunden würde der Button eh ein Command Binden und dort würde man das "CanExecute" entsprechend setzen und der Button würde automatisch deaktiviert.)
Hallo,
Ich habe eine kleine Frage zur Verwendung der Buttons auf Windows Phone. In den wenigstens Apps sieht man die traditionellen Buttons auf dem Pivot bzw. Panorama; nur in den Settings sind sie einigermassen verbreitet.
Was man hingegen sieht sind - was für mich aussieht wie - Labels mit Text, welche den Flow zwischen den Pages in einer App anstossen. Wie etwa im Outlook Mobile die Liste der Emails.
Welches Control ist das? Ich würde gerne eine Art Menü bauen, aber mit Buttons sieht es grauenhaft aus
MfG
Schau dir mal das hier an: http://htmlagilitypack.codeplex.com/
Damit kannst du über die Elemente eines HTML-Dokuments drüber gehen.
Oder direkt a-Nodes raus-selektieren, href Attribut anschauen ob "playerID=942166" drin vorkommt und dann mit .InnerText an "Bob Kohlmeier" kommen...
Thema hier erledigt!
Das kannst du ruhig betonen. Nachdem du hier schon die Antwort von Dawid W bekommen hast mit dem SolidColorBrush hast du die Frage ja noch in nem anderen Forum gepostet wo dir der Code vorgekaut wurde und dann schreibst du hier noch
O.K. das habe ich jetzt so gelöst:
Toll gemacht
Ich nehme an das du in SelectionChanged auf das SelectedItem einer der Comboboxen zugriffts.Du solltest überprüfen ob das Null ist bevor du irgendwas damit machts.
Also das Wichtigste ist, dass die Funktionen, die du in C# nutzen willst, als extern "C" deklariert sind.
Die Funktionen selbst kannst du mit dem DllImport-Attribut einbinden. Beachte auch das Marshaling für dich eine Rolle spielt, je nach dem was die Funktionen für Daten erwarten/zurückgeben.