Danke für die Tips! Ich habs jetzt, das Plugin rennt, die GUI auch.
Ich habe aber anstelle einer normalen Class Library eine WPF User Control Library genommen. Die wird auch zur DLL, ist aber bequemer aufgebaut. Nur zur Info...
Danke euch nochmal!
Peinlich ... sorry!
Habe Copy & Paste gemacht und beim Ändern des Methodennamens wohl ein wenig zu viel gelöscht ...
Jetzt geht es - danke Euch!
bs.DataSource = AlleLieferartikelLieferant(lieferant.ID);
exdream# schrieb:
Bei der Eingabe von 190 soll folgende Ausgabe erstellt werde:
50 Geldschein: 3
20 Geldschein : 2
10 Geldschein: 1
5 Geldschein: 0
DEN Geldautomaten würd ich dann auch gerne mal nutzen
Ich glaube da hat sich ein kleiner Fehler eingeschlichen...
Ich habs bei mir immer so das ich dem "WindowService" (Resolved aus nem ServiceLocator (auch ServiceProvider genannt) View-ViewModel Paare bekannt mache.
dadurch habe ich am Ende die Möglichkeit zu sagen:
public class FooViewModel : ObservableObject
{
private void ShowBar()
{
var windowService = ServiceLocator.Resolve<IWindowService>();
var barViewModel = new BarViewModel();
windowService.ShowDialog(this, barViewModel);
}
}
"this", also das ViewModel ist dann der Owner und barViewModel dann das neue Fenster.
Der WindowService erstellt alle fenster und kennt alle offenen, bei dem Owner holt er sich die View anhand des ViewModels aus den offenen Fenstern, das neue ViewModel ist dann der DataContext des neuen Fensters das er erstellt sobald er den View Typen anhand des ViewModels ermittelt hat.
Siehe dazu auch:
http://www.my-libraries.de/index.php/component/content/article/11-libraries/dwservices/68-iwindowservice
Der Vorteil ist das man es dadurch auch sehr leicht testen kann, einfach ein IWindowService Mock unterschieben schon kannst du das Ergebnis aus den Tests beeinflussen.
Falls es mehrere Views zu ein ViewModel geben kann, dann registrier ich die Views mit nem Namen, dann sagt man beim ShowDialog auch noch welche View man gerne hätte.
Das ViewModel sollte keine View Objekte erstellen oder gar anzeigen, dadurch ist es nicht mehr Testbar. Ich gehe sogar soweit das ich sage das das "ViewModel Projekt" nichtmal das "View Projekt" kennen darf. also ein service.ShowDialog<BarView>(barViewModel) ist dadurch nicht möglich (erlaubt).
µ schrieb:
List<string> names = getNames();
oder
var namesList = getNames();
Ich muss zugeben, die Bezeichnung fooList/fooSequence findet man bei mir oft, weil wenn ich es nur z.B. "names" nenne und hinterher mit foreach drübergehe, dann muss ich ja foreach (var name in names) schreiben und es nervt mich, dass sich die Liste und der einzelne String vom Namen her nur an dem 's' unterscheiden. Da kann ich IntelliSense auch nicht mehr so effektiv nutzen
Alles schon etwas länger her, also keine 100%-igen Aussagen:
Es gibt Wege aber keiner davon ist wirklich schön und sauber.
Deshalb vielleicht besser mit BeginAcceptTcpClient arbeiten, das tut nicht ganz so weh. Asynchrones-IO hat sowieso einige Vorteile.
Jedenfalls kann "TcpListener serverSocket" dann jederzeit geschlossen werden (Close()).
Wenn ich mich richtig erinnere Verursacht das einen letzten Aufruf des Callbacks von BeginAcceptTcpClient. Also im Callback darauf achten in welchem Zustand sich der Socket befindet.
Hallo,
Chiller schrieb:
Kannst du eingrenzen, wie lange der schreibende Prozess braucht um das nächste byte reinzuschreiben?
Nein. Woher soll ich wissen wie schnell oder langsam das Netzwerk ist?
Die Lösung, die Hellsgore oben angegeben hat, funktioniert. Daher sehe ich im Moment keinen Grund daran noch irgendwas zu ändern.
Gruß
Michael
Für einen Quadtree ist es auch ganz schön, wenn er sich selbst unterteilen kann.
Ich vermute mal Du hast eine List von Geometriedaten pro Knoten. Falls die Liste zu viele Daten enthält, wird eine Methode "Subdivide" aufgerufen. Diese erstellt die 4 Kindknoten, verteilt die Geometrie auf die jeweiligen Kinder und führt das rekursiv weiter bis zu einer bestimmten Maximaltiefe.
Hi,
danke für deine Antwort.
Die Sourcen für die Dll habe ich leider nicht in der Hand , von daher wäre es der C++/CLI Wrapper...hatte aber eigentlich gehofft einen Wrapper umgehen zu können!
Gruß
Sascha