Nur als kleine Alternative, ich lege/bearbeite Solutions und Projekte eigentlich nur noch per Kommandozeile an:
Finde ich viel intuitiver als das mit VS zu machen, aber ist natürlich geschmackssache
Faktoren die für euch eine Stelle entweder attraktiv oder unattraktiv machen?
Ich habe zumindest die Erfahrung gemacht, dass fähige Leute ziemlich gut wissen wie viel man wo verdienen kann und dass kleinere Firmen sowas gerne mal mit "familiärer Atmosphäre" und einem Tischkicker kompensieren wollen.
Ach jetzt versteh ich was du meinst.
Mit dem Mittelwert müsstest du das Eingangssignal mit einem laufenden Fenster betrachten und kannst dann die Peaks so erkennen.
Also so ganz verstehe ich deine Anforderung nicht, aber wieso machst du nicht einfach einen Schwellwert (könnte sich ja am Mittelwert orientieren, etc.) ab dem die Peaks auf 320 gehoben werden und ansonsten beschnitten?
Vielleicht für Anfänger interessant, die eine Plugin-Engine für eine WPF-Anwendung bauen wollen und Inhalte dynamisch hinzufügen wollen:
MVVM siehe: [Artikel] MVVM und DataBinding
Das ganze ist natürlich stark vereinfacht und nutzt direkt das MainViewModel, was für aufwendigere Anwendungen wahrscheinlich ungeeignet ist.
Was sollen unsere Plugins wissen?
public interface IHostView
{
public string WindowTitle { get; set; }
}
Z.B. MainViewModel implementiert IHostView:
public class MainViewModel : BaseViewModel, IHostView
{
private List<Plugin> _Plugins = new List<Plugin>() ;
private string _WindowTitle = "Meine Hauptanwendung";
public string WindowTitle {
get => _WindowTitle;
set {
_WindowTitle = value;
OnPropertyChanged(nameof(WindowTitle));
}
}
public List<MenuItem> PluginMenuItems
{
get
{
var list = new List<MenuItem>();
foreach (var plugin in _Plugins)
list.Add(plugin.GetPluginMenuItem());
return list;
}
}
public MainViewModel()
{
// Plugins dynamisch hinzufuegen
_Plugins.Add(new MeinPlugin(this));
}
}
Abstrakte Plugin-Klasse, was soll es können:
public abstract class Plugin
{
public IHostView _Host;
public Plugin(IHostView host)
{
_Host = host;
}
public abstract string Name { get; }
// Standardmaessig kein MenuItem
public virtual MenuItem GetPluginMenuItem() { return null; }
}
Plugin-Implementierung:
public class MeinPlugin : Plugin
{
public MeinPlugin(IHostView host) : base(host)
{
}
public override string Name => "Mein Plugin";
public override MenuItem GetPluginMenuItem()
{
var menuItem = new MenuItem();
// Alternativ Command
menuItem.Header = this.Name;
menuItem.Click += MenuItem_Click;
return menuItem;
}
private void MenuItem_Click(object sender, System.Windows.RoutedEventArgs e)
{
_Host.WindowTitle = "Hallo !";
}
Wie kommst du eigentlich auf die Idee mit dem Timer?
Rein logisch: Du musst doch vor dem Einfügen lediglich testen ob in deiner Liste der Eintrag schon vorhanden ist (wie z.B. in TimerScanner_Tick) und falls ja, die Spalte "Anzahl" des ListView-Items um eins erhöhen.
Trotzdem unbedingt FZelles Links berücksichtigen.
Einfacher ist es sowas erstmal als Konsolenanwendung richtig objektorientiert zu basteln.
Interessant wäre auch der Einsatzort. Falls es mal Überlegungen geben sollte, später in die Cloud zu ziehen oder dort bereits läuft, könnten NoSQL-Datenbanken Kostenvorteile bieten.
Das ist z.B. der Hauptgrund warum csharpfritz mit seinem Projekt KlipTok von MySQL zu RavenDb umzieht, bei dem er wahrscheinlich eine ähnlich komplexe Datenstruktur wie du hast. Milestone Reached - 4 MILLION Clips Indexed!
Kannst du mal einen Userpath (%appdata%/...) statt den C:/SystemInventory ausprobieren?
Kann dort sicher ein normaler User schreiben?! Bei einem Autostart per Registry hast du keine elevated rights, auch nicht als Adminuser, dafür gibts Tasks.
Du kannst auch nach der Änderung OnPropertyChanged feuern. Am saubersten wäre aber wahrscheinlich Settings als eigenes ViewModel.
Je nachdem wie groß das ganze wird oder nach Quelle könntest du das original Objekt dann mittels AutoMapper in ein ViewModel umwandeln.
These uses for DateTimeOffset values are much more common than those for DateTime values. As a result, consider DateTimeOffset as the default date and time type for application development.
Also nur mal als Ausstehender: ich verstehe gar nicht warum das so heiß diskutiert wird Mir ist das auf anderen Seiten auch noch nie aufgefallen wie sich das dort verhält. Ich nutze zumindest nur die mittlere Maustaste oder Rechtsklick in neuem Tab.
Die Beispiel-App veranschaulicht, wie ein Standardkonfigurationsanbieter erstellt wird, der Schlüssel-Wert-Paare für die Konfiguration über Entity Framework (EF) Core aus einer Datenbank liest.