Laden...
Avatar #avatar-3402.jpg
7.e.Q myCSharp.de - Member
Student Mechatronik Scheeßel Dabei seit 06.10.2004 925 Beiträge
Benutzerbeschreibung

Forenbeiträge von 7.e.Q Ingesamt 925 Beiträge

25.04.2020 - 11:07 Uhr

Uaaah, Zombiethreadapokalypse! 😄

Ich bin mir nicht sicher, ob's eine on-fits-all Lösung dafür gibt. Aber wahrscheinlich irgendwas mit look-ahead. Ich bin auch schon eine Weile raus aus diesem Thema. So... ca... 12 Jahre.

19.03.2013 - 19:59 Uhr

Da ich git in dem Projekt bereits verwende, ist es in der Tat die naheliegendste Lösung, dabei einfach den Checkin per Post-Build Script zu machen.

18.03.2013 - 18:49 Uhr

Bevor du ein Programm schreibst, dass die Synchronisation von der DropBox an und ausschaltet, würde ich lieber im Post/Pre-Build in eine richtige Versionsverwaltung einchecken, dafür musst du nicht mal ein Programm schreiben, sondern einfach nur git mit den richtigen Parametern aufrufen.

Danke! Ich denke, das ist tatsächlich die gangbarste Lösung. Dann werden wirklich auch nur Dinge eingecheckt, die erfolgreich kompilieren und ich muss mich auf der Gegenseite nur ums Auschecken kümmern, was ja nicht so sehr Problem ist, wie das Einchecken. Warum bin ich da nicht selbst drauf gekommen? Egal... ich klopf das mal auf Usability ab.

18.03.2013 - 13:58 Uhr

Naja, ich dachte halt, es sei am effektivsten, von meinem Problem ein Video zu machen. Ein Bild sagt mehr als 1000 Worte, findet ihr nicht?

18.03.2013 - 12:58 Uhr

Klingt nach 'nem Bug.

MrSparkle, danke für den Hinweis. Ich dachte eigentlich, dass mit Hilfe des Videos die Frage eindeutig genug gestellt sei... was ist denn für dich nicht klar ersichtlich?

18.03.2013 - 10:03 Uhr

Hi Leute,

kann mir eventuell jemand dieses Verhalten erklären? http://www.youtube.com/watch?v=cOWBCCEpSAk

Ich kann keine Pixel in einer Bitmap malen. In einer anderen, die nicht im VS erzeugt ist, geht's.

Ergänzung (18:45): "Ich kann keine Pixel [...] malen" heißt hier: sie lassen sich im Visual Studio Bitmap Editor zwar malen, verschwinden aber sofort wieder, sobald ich die Maustaste loslasse. Es handelt sich um Visual Studio Professional 2012 (DEU).

Die Daten dieser Bitmap: 15x15x1bpp

Details zum Studio:


Microsoft Visual Studio Professional 2012
Version 11.0.51106.01 Update 1
Microsoft .NET Framework
Version 4.5.50709

Installierte Version: Professional

LightSwitch für Visual Studio 2012   04938-004-0033001-02324
Microsoft LightSwitch für Visual Studio 2012

Office Developer Tools   04938-004-0033001-02324
Microsoft Office Developer Tools

Rechtschreibprüfung für die Visual Studio 2012-Codeanalyse   04938-004-0033001-02324
Rechtschreibprüfung für die Microsoft® Visual Studio® 2012-Codeanalyse

Teile des International CorrectSpell™-Rechtschreibprüfungssystems © 1993 by Lernout & Hauspie Speech Products N.V. Alle Rechte vorbehalten.

The American Heritage® Dictionary of the English Language, Third Edition Copyright © 1992 Houghton Mifflin Company. Elektronische Version lizenziert von Lernout & Hauspie Speech Products N.V. Alle Rechte vorbehalten.

Team Explorer für Visual Studio 2012   04938-004-0033001-02324
Microsoft Team Explorer für Visual Studio 2012

Visual Basic 2012   04938-004-0033001-02324
Microsoft Visual Basic 2012

Visual C# 2012   04938-004-0033001-02324
Microsoft Visual C# 2012

Visual C++ 2012   04938-004-0033001-02324
Microsoft Visual C++ 2012

Visual F# 2012   04938-004-0033001-02324
Microsoft Visual F# 2012

.NET Reflector Visual Studio Extension   8.0.2.313
Integrates .NET Reflector into Visual Studio to allow you to seamlessly debug into third-party code and assemblies, even if you don't have the source code for them.

Visit www.reflector.net for more information.

Copyright (c) 2009-2012 Red Gate Software Inc.

CodeMaid   #114
CodeMaid is an open source Visual Studio extension to cleanup, dig through and simplify our C#, C++, XAML, XML, ASP, HTML, CSS and JavaScript coding.

Written by Steve Cadwallader, for more information visit http://www.codemaid.net/

JetBrains ReSharper 7.0.1   Full Edition build 7.0.1098.2760 on 2012-08-27T14:31:12
JetBrains ReSharper 7.0.1 package for Microsoft Visual Studio. For more information about ReSharper, visit http://www.jetbrains.com/resharper/. Copyright © 2003–2013 JetBrains, Inc.

Microsoft Python Tools for Visual Studio   1.5.51026.0
Python Tools for Visual Studio provides intellisense, project support, project and item templates, as well as a REPL window for Python development.

Microsoft Python Tools for Visual Studio - Django Integration   1.5.51026.0
Provides templates and integration for the Django web framework.

Microsoft Python Tools for Visual Studio - Profiling Support   1.5.51026.0
Profiling support for Python projects.

Mindscape Web Workbench   1.0
Accelerate and simplify your Web development experience with Visual Studio integrated Sass, Less and CoffeeScript support

NuGet-Paket-Manager   2.2.40116.9051
NuGet-Paket-Manager in Visual Studio. Weitere Informationen zu NuGet finden Sie unter "http://docs.nuget.org/".

PostSharp   3.0.11.0

PreEmptive Analytics Visualizer   1.0
Microsoft Visual Studio-Erweiterung zur Visualisierung aggregierter Zusammenfassungen vom PreEmptive Analytics-Produkt.

SQL Server Data Tools   11.1.20627.00
Microsoft SQL Server Data Tools

Web Developer Tools   1.0.30710.0
Microsoft Web Developer Tools besteht aus den folgenden Komponenten:
Seitenprüfung: Ein Tool, mit dem Webanwendungen auf effiziente Weise zerlegt und Front-End-Probleme diagnostiziert werden können.
Webpublishing: Erweiterungen, die für Webpublishing für gehostete Server und lokale Server erforderlich sind.
Webformularvorlagen: Umfasst die Standardvorlagen für Webformularanwendungen.
Editor-Erweiterungen: Umfasst HTML-, CSS- und JS-Editor-Erweiterungen, die die Entwicklungserfahrung erheblich optimieren.

Danke

Grüße,
Hendrik

17.03.2013 - 11:47 Uhr

Nein, keine Sourcecodeverwaltung im Sinne von git/svn/cvs, sondern lediglich Synchronisation. Ich nutze DropBox, weil es automatisch synchronisiert und ich mich nicht um Checkin/Checkout kümmern muss - ich bin vergesslich und mein Arbeitsweg ist zu lang, um vergessene Checkins/manuelle Syncs zu korrigieren.

Zur echten Revisionskontrolle nutze ich git.

17.03.2013 - 10:25 Uhr

Das Verfahren habe ich schon verwendet, allerdings musste ich die Erfahrung machen, dass ich manchmal vergesse, es wieder einzuschalten und dann am jeweils anderen Ende einen alten Stand habe... leider ungeeignet ob dieser persönlichen Charakterschwäche.

17.03.2013 - 09:29 Uhr

Hi Leute,

ich habe eine meiner Solutions in meiner DropBox liegen, damit ich sowohl von zuhause als auch aus dem Labor daran arbeiten kann. Das funktioniert weitestgehend problemlos, bis auf eine kleine nervige Kleinigkeit: immer mal wieder kommt es beim Kompilieren vor, dass sich DropBox und Visual Studio bezüglich der Zugriffsrechte auf die zu erstellenden bzw. zu synchronisierenden Dateien in die Haare kriegen. Zu merken ist das immer dann, wenn VS den Streit verliert und sich beschwert, dass es eine PDB oder eine DLL oder eine EXE nicht erzeugen kann, weil sie von einem anderen Prozess verwendet wird.

Hat da eventuell jemand eine Lösung oder einen Workaround parat, mit dem man möglichst genau so komfortabel, aber ohne die lästige Zankerei ("Ich will!" - "Nein ich!!!"... Kinder... tzzz) in der DropBox arbeiten kann?

Danke!

Viele Grüße,
Hendrik

07.03.2013 - 09:49 Uhr

Im Grunde beherrsche ich HTML, aber die Übergabe von Collections muss ich mir in der Tat angucken.

Jedoch, was ich brauche, ist weniger fertiger HTML-Code als viel mehr eine zündende konzeptionelle Idee...

07.03.2013 - 01:14 Uhr

Okay, mein Problem ist einerseits die Darstellung, also die Struktur des HTML Dokuments mittels dessen ich die Daten editierbar mache und andererseits die Rückgabe der geänderten Daten an das Backend.

Da will mir irgendwie nichts vernünftiges einfallen, wie man das am besten realisiert. Als ein Gesamtformular? Als ein Formular pro Unterknoten auf Ebene 1? Jeden Node in einem eigenen Formular?

Wie bekomme ich den Baum, der ja aus vielen Instanzen unterschiedlichster Klassen besteht, sauber an das Backend zurückgegeben?

05.03.2013 - 22:21 Uhr

Hmm... Ich sollte ergänzend hinzufügen, dass...

a) ... bereits Daten existieren (als XML-Datei)
b) ... die Datenstruktur feststeht, bis auf eine Ausnahme: die Nodenamen der Ebenen 1 - 3 unterhalb des Root-Knotens

Ich hatte diese Datenstruktur schon in einem anderen Thread angesprochen wegen eines XML Schemas und ob es möglich ist, ein solches für eine solche etwas ungewöhnliche XML Struktur zu erstellen.

Die Daten, um die es geht, sind, für Browser mit einem XSLT versehen, dort einzusehen: http://bit.ly/XRgzxJ (verzeiht, dass ich einen Shortener nutze; ich möchte vermeiden, und hoffe es damit zu erreichen, dass die URL über Google gefunden werden kann).

Die grundsätzliche Struktur wird sich nicht mehr ändern. Was sich ändern kann, sind jedoch, wie angedeutet, die Node-Namen und Positionen auf den Ebenen 1 - 3 unterhalb des Root-Knotens. Die Anzahl von 3 Ebenen bleibt vorerst bestehen.

05.03.2013 - 15:15 Uhr

Hi Leute,

ich habe einen Haufen in einer Baumstruktur organisierte Daten (Objekte verschiedener Klassen). Diese Daten möchte ich gerne in ASP.NET zentral, also ales auf einer einzigen Seite, editierbar machen. Dazu zählt nicht nur, dass einzelne Attribute dieser Daten verändert werden können sollen, sondern auch weitere "Zweige" und "Blätter" zu dem Baum hinzugefügt, (rekursiv) gelöscht und (ebenfalls rekursiv) verschoben werden können sollen.

Hat da jemand eine zündenden Idee, wie man das am besten mit ASP.NET MVC 3 realisiert?

Danke!

Cheers,
Hendrik

01.03.2013 - 00:27 Uhr

Für C# definitiv Unity3D. Nicht nur für Spiele geeignet; wir haben sie im letzten Jahr als KI-Engine für unseren Roboter verwendet (Wegfindungsroutine; leider auch ein Alleinstellungsmerkmal der Pro-Version).

27.02.2013 - 16:53 Uhr

Ah, guck ich mir mal an, danke!

26.02.2013 - 11:20 Uhr

verwendetes Datenbanksystem: XML

Hi Leute,

ist es möglich, in einem XML Schema zu definieren, dass n Ebenen unterhalb des Rootnodes Nodes kommen, die keinen festen Namen, aber dennoch mindestens ein festes Attribut haben? Und ist es möglich, zu definieren, dass ab Ebenen unterhalb dieser n Ebenen mit unspezifiziertem Namen nur noch eine fest definierte Struktur folgen darf?

Folgender Hintergrund: ich definiere mir Adress-IDs mittels einer XML-Datei. Diese Adress-IDs bestehen aus drei Bytes. Ich verwende sie, um eine selbstentwickelte Hardware über UDP-Pakete zu steuern (die drei Adress-Bytes legen fest, welche Komponente ich anspreche). Sie sind in der XML Datei so definiert, dass ich sie per XPath direkt erreichen kann. Beispiel (rot = variabel/unspezifiziert; grün=fest/spezifiziert:


<IDTree>
<!-- Zwischen hier... -->
  <Staubsauger id="0x00">
    <Sensoren id="0x00">
      <FilterFuellstand id="0x00" />
      <DrehzahlVentilator id="0x01" />
    </Sensoren>
    <Aktoren id="0x01">
      <DrehzahlVentilator id="0x00">
<!-- ... und hier in der Hierarchie sind die Node-Namen unspezifiziert -->
<!-- Unterhalb dieser Ebene sind die Node-Namen und die Hierarchie fest spezifiziert -->
        <Description>
          <ShortDesc>Setzt die Drehzahl und Richtung des Saugventilators</ShortDesc>
          <Field type="int" bitLength="32" name="Drehzahl" />
          <Field type="byte" bitLength="8" name="Drehrichtung">
            <Value value="0x00" means="Ansaugen" />
            <Value value="0x01" means="Ausblasen" />
          </Field>
        </Description>
      </DrehzahlVentilator>
    </Aktoren>
  </Staubsauger>
</IDTree>

Somit kann ich eine Adress-Bytesequenz über /IDTree/Staubsauger/Sensoren/DrehzahlVentilator ansprechen und erhalte dadurch a) bessere Lesbarkeit, b) bessere und c) zentrale Wartbarkeit, wenn sich was an den IDs ändert. Da ich in einem Team an der Hardware arbeite, ist c) wichtig, weil Änderungen oder Erweiterungen an den Adressen natürlich für alle Bereiche des Projekts gelten sollen. Wildwuchs soll vermieden werden.

Fest spezifiziert sein sollen ausnahmslos alle Attribute, wie ich sie im Beispiel genannt habe. Das id-Attribut soll für die Adress-Zweige verpflichtend sein. Die anderen Attribute sollen teilweise optional (mit Standardwert) oder ebenfalls pflicht sein.

Unterhalb der Ebene, auf der sich beispielsweise FilterFuellstand oder DrehzahlVentilator befinden, lege ich, wie im Beispiel zu sehen, eine Dokumentationsstruktur ab. Sie ist fest definiert, beginnt mit einem Node mit spezifischem Namen "Description" und erhält darunter ein paar ebenfalls fest benamte Nodes mit definierter Hierarchie.

Nun ist die kurze und knackige Frage: ist es möglich, diese Vorgaben in ein XML Schema zu gießen?

Vielen Dank!

Cheers,
Hendrik

16.02.2013 - 07:39 Uhr

Und wenn das alles sauber umgesetzt ist dann sollte das auch keine Hirnvermusung sein.

Und genau das ist das Problem... Die Anwendung ist über Jahre gewachsen, nein, lass es mich "gewuchert" nennen. Da ist leider nichts mehr sauber drin umgesetzt. Aber um von vorn anzufangen und all die Erfahrungen, die ich im Laufe der Zeit gemacht habe, sauber in einer neuen Software zu verpacken, fehlt leider auch die Zeit. ****** Deadline.

16.02.2013 - 00:14 Uhr

Okay, das mit den WaitHandles funktioniert. Ist allerdings gewaltige Hirnvermusung. Parallel in Threads zu denken, macht keinen Spaß. Gibt es da Methoden, die das Mitdenken bei Multithreading-Anwendungen vereinfachen, den Kopfcompiler verbessern?

Alter Falter...

15.02.2013 - 02:16 Uhr

Hi Leute,

ich habe hier ein Problem, das mir das Gehirn ein wenig vermust... folgendes:

in einer Anwendung wird ein IronPython-Script ausgeführt, das sequenziell bestimmte Methoden einer C#-Klasse abarbeitet. Diese Methoden laufen im IronPython-Thread synchron, blockieren also die Ausführung des IronPython-Scripts, sodass jede Methode wirklich erst dann aufgerufen wird, wenn die vorherige beendet ist.

Intern laufen diese Methoden hingegen asynchron. Sie führen in einem eigenen Thread ein Kommando auf einer Hardware aus und der Thread wartet dann auf ein von der Hardware ausgelöstes Complete-Ereignis. Dieses Ereignis lässt die Methode dann letztlich auch im IronPython-Script zurückkehren und selbiges die nächste Methode starten. Das funktioniert bis jetzt ganz brauchbar, auch wenn ich da noch auf die echten Thread-Sync Mechanismen verzichte und an deren Stelle quick'n'dirty zyklisch eine volatile bool'sche Variable abfrage. Beziehungsweise derer zwei, weil die Methoden eigentlich immer darauf warten müssen, dass genau zwei Geräte "Complete" zurückmelden.

Darüber hinaus möchte ich nun aber eine Möglichkeit einbauen, die Ausführung der einzelnen Methoden aus einem anderen Thread heraus zu pausieren. Das heißt, es soll nicht mehr nur auf die "Complete"-Ereignisse der Hardware gewartet werden, sondern zusätzlich und nur sofern von außen angefordert noch auf ein "Vorgang-Fortsetzen"-Ereignis.

Wie ist bei so etwas der Königsweg, um das zu erreichen? Welche Mechanismen zur Threadsynchronisierung nutzt man dabei am besten?

Vielen Dank!

Cheers,
Hendrik

//edit: by the way: ich nutze async/await und Task

25.01.2013 - 10:26 Uhr

Abgesehen davon, dass der Thread tot zu sein scheint; ich vermute "RL" bedeutet Relation.

25.01.2013 - 10:21 Uhr

... oder den Compiler/die Sprache entsprechend erweitern, dass die Zahl der Parameter explizit angegeben werden kann und nach oben praktisch keine Grenze hat.

Ich stimme da Herbivore zu. Besser haben als brauchen.

16.12.2012 - 10:21 Uhr

Hmm... könnte sowas sein wie die Artefakte bei Games, die auftreten, wenn man VSync deaktiviert hat und schnelle Bewegungen ausführt... ist aber nur eine sehr unbegründete Vermutung.

10.12.2012 - 15:16 Uhr

Hi Leute,

kann man die selbe Instanz eines UdpClient nutzen, um sowohl einerseits Broadcast Pakete zu empfangen und andererseits Pakete an eine spezifische Adresse zu versenden? Oder macht das Probleme?

Danke!

Viele Grüße,
Hendrik

01.09.2012 - 16:46 Uhr

Danke. Das hab ich überlesen...

01.09.2012 - 16:05 Uhr

Buch? Ich finde darunter nur einen Blogpost.

//edit: wenn ich bei Amazon danach suche, ist der erste Eintrag eine Aluleiter. Keine gute Werbung... 😄

28.08.2012 - 11:59 Uhr

Okay, ich danke dir. Ich werde berichten, ob und was die Änderung bewirkt hat, sobald ich sie implementiert habe.

28.08.2012 - 11:32 Uhr

Ah, okay, stimmt, das geht ja auch. Ja, das probiere ich mal (Donnerstag, dann bin ich wieder im Labor)

28.08.2012 - 10:40 Uhr

Okay. Hab ich das korrekt verstanden, ich sollte das derzeit quasi "event"-basierte Lesen in einen Thread auslagern, der zyklisch pollt und neue Daten in eine Queue<byte[]> packt?

Die Queue<byte[]> habe ich schon, nur dass derzeit noch mittels BeginReceive/EndReceive die Datenpakete dort hineingelegt werden. Ich werde mal ausprobieren, sofern ich deinen Vorschlag richtig interpretiert habe, inwiefern Polling an dem Verhalten etwas ändert.

Bei der Gegenstelle handelt es sich zwar derzeit noch um ein C# Programm, das unter Mono auf einem RaspberryPi läuft. Jedoch wird es mittelfristig durch ein anderes ARM Cortex Board auf Basis des STM32 ersetzt, das die UDP Pakete quasi "direkt" generiert, ohne den Overhead eines CLR-Prozesses auf einem richtigen Betriebssystem. Die darauf laufende Firmware übernimmt das Verpacken direkt. Performanceprobleme sollten auf der Seite also schon bald keine Rolle mehr spielen.

Ich werde die oben erwähnt Queue<byte[]> nun, der Threadsicherheit wegen, durch eine ConcurrentQueue<byte[]> ersetzen. Bisher habe ich aber auch mit der normalen Queue keine Probleme.

28.08.2012 - 01:09 Uhr

Ich habe eine Steuersoftware für einen autonomen Roboter geschrieben, die mit der Roboterhardware inzwischen über UDP (vorher direkt per UART, dort kam mir ein ganz ähnliches Verhalten unter) kommuniziert. Die Firmware auf der Bridge zwischen dem CAN-Bus und dem Steuerrechner verpackt CAN-Nachrichten in ein UDP Paket und verschickt dieses an die Broadcast-Adresse des Subnetzes. Meine Software empfängt diese Pakete, wertet sie aus und verschickt ihrerseits Kommandos an die Bridge.

Die Fahr- und Drehgeschwindigkeit des Roboters ist per Regelkreis geregelt. Die Regler (P/PI/PD/PID, je nach Anwendungsfall) können während einer Regelabweichung durchaus mal bis zu 1000 UDP Pakete (Kommandos für die zwei Fahrmotoren mit Geschwindigkeit und Drehrichtung) pro Sekunde rausfeuern, die alle so ca. 20 - 30 Byte Payload haben. Damit soll möglichst verzögerungsfrei (Totzeiten sind der Tod jeder Regelung) geregelt werden können.

Als Erleichterung habe ich meiner Steuersoftware gesagt, sie soll Pakete wirklich nur noch dann rausschicken, wenn sich die Payload gegenüber dem letzten gesendeten Paket verändert hat, also keine Kommandos mehrfach. Das bewirkt schonmal eine gewisse Entlastung.

Wir nutzen UDP Broadcast, damit zur selben Zeit nicht nur der Steuer-PC im Roboter selbst, sondern auch beliebig viele Entwicklersysteme mit dem Roboter kommunizieren und die Sensordaten und Kommandos mitschneiden können. Bei UART vorher war immer nur ein Gerät zur Zeit anschließbar.

Und, bevor ihr fragt, ja, die Steuersoftware ist in C# geschrieben, der Steuer-PC läuft auf Windows 7 und es funktioniert bis auf ein paar Krücken. Sogar performant und nahezu totzeitfrei. Hätte ich auch nicht gedacht. Ist alles ein bisschen mit Kanonen auf Spatzen geschossen, aber der Effekt auf interessierte Zuschauer ist enorm beeindruckend, wenn sie die Steuersoftware in Kombination mit der auf Unity3D basierenden K.I. in Aktion sehen. 😃

27.08.2012 - 17:13 Uhr

Hi Leute,

kann es sein, dass sich zwei UdpClients in die Quere kommen, wenn der eine per BeginReceive/EndReceive-Schleife auf Broadcast Pakete horcht und der andere plötzlich anfängt, auf die Adresse eines Broadcastsenders in schneller Folge Pakete abzufeuern?

Der BC-Versender schickt unentwegt UDP Pakete an die Broadcast-Adresse. Er horcht aber auch auf einem anderen Port auf eingehende UDP Pakete.

Es erscheint mir, dass der BC-Empfänger-UdpClient auf einmal mit Empfangen aufhört, solange der Sender-UdpClient seine Pakete rauspumpt. Erst wenn der Sender-UdpClient mit dem Flooden aufhört, reagiert der BC-Empfänger-UdpClient wieder...

Wireshark sagt mir, dass der BC-Versender auch noch sendet, während er den Flood empfängt und auch verarbeitet. Aber im BC-Empfängerprozess kommt halt während er flutet nix an, obwohl der UdpClient definitiv in einem BeginReceive steht.

Ist das ein erwartbares Verhalten?

Danke

Viele Grüße,
Hendrik

22.08.2012 - 20:01 Uhr

Schnelle Antwort, ohne lange drüber nachzudenken: leite ab und guck, wo die lokalen Maxima und Minima liegen. Darüber solltest du den kleinsten und größten Radius bekommen können. Kompliziert, aber was besseres fällt mir gerade nicht ein...

17.08.2012 - 11:57 Uhr

Hast du schon probiert, bei der Bindung der einzelnen Felder ebenfalls UpdateSourceTrigger=PropertyChanged einzusetzen?

Beispiel:


<DataGridTextColumn
                    Header="Type"
                    Width="220"
                    Binding="{Binding Type, UpdateSourceTrigger=PropertyChanged}"
                    FontSize="14" />

16.08.2012 - 22:54 Uhr

Irre ich mich, oder hat der Kollege das Control völlig am Konzept von WPF vorbei entwickelt?

30.07.2012 - 01:31 Uhr

Das lässt sich aber codetechnisch noch massiv zusammenfassen...



    public class ConverterStringToBool : IValueConverter
    {
        public object Convert(object value, Type targetType,
            object parameter, CultureInfo culture)
        {
            return (value as string ?? "").ToLower().Equals("true");
        }

        public object ConvertBack(object value, Type targetType,
            object parameter, CultureInfo culture)
        {
            return ((bool)value) ? "True" : "False";
        }

    }

Typfehlerfälle sind damit aber nicht abgefangen. Sind sie bei dir aber auch nicht.

18.07.2012 - 19:12 Uhr

Macht man da nicht normalerweise ein Contextmenu auf dem Icon im SystemTray in dem 'n Beenden-Eintrag drin ist? Kenn ich so...

13.07.2012 - 13:18 Uhr

Ohne die Frage jetzt direkt beantworten zu können; du kannst ja mal einen Benchmark damit probieren, also die Zeit stoppen, die für Convert und für einen normalen Cast gebraucht wird.

Darüber hinaus könntest du dir anschauen, was der Compiler aus den beiden Aufrufen macht. Wenn er gut optimiert, dürften beide Aufrufe den gleichen Maschinencode ergeben.

Wissen tu ich das allerdings nicht. 🤔

07.07.2012 - 09:17 Uhr

Der Vorteil vektorbasierter GUIs und alle grafischen Vorteile mögen auf der Hand liegen. Bei WinForms wie auch anderen UIs ist das halt immer der Nachteil der Anpassung der Anwendung an die Auflösung.Für grafisch anspruchsvolle Anwendungen - vor allem eventuell auch Simulationen mit Grafikbeschleunigung ist das alles sinnvoll.

Für einige Nieschenbereiche mag WPF auch ganz toll sein, aber gängige Probleme der Informatik wie die Verarbeitung großer Datenmengen, technische/mathematische oder systemnahe Fragestellungen und Probleme werden mit WPF schlichtweg nicht gelöst.

Dafür ist WPF auch nicht unmittelbar vorgesehen. Es ist ein Konzept für GUIs, hat nichts mit systemnahen Fragestellungen zu tun. Die erledigt man im CodeBehind, wenn's nötig ist. Ebenso das Verarbeiten großer Datenmengen. Die DARSTELLUNG großer Datenmengen beherrscht WPF sehr wohl.

Warum also zusätzlich sich mit WPF, WCF, Silverlight, Expression Blend , XAML belasten, wenn dadurch ausser dem "Erlebniswert" einer Anwendung nichts gewonnen wird.
Und das ist es ja, was Microsoft eigentlich erreichen will. Zukünftige Anwendungen sollen zum Erlebnis werden und daher der ganze Gimmiks Firlefans und 3D Aufwand.

Warum sich zusätzlich mit der händischen Verknüpfung von GUI und Anwendungsschicht rumärgern, wenn es die sehr einfache Datenbindung von WPF wunderbar erledigt? Warum sich mti Netzwerkprotokollen und Sicherheitssystemen auseinandersetzen, wenn WCF das alles mitbringt, man es nur einmal sauber konfigurieren muss und dann damit im Code quasi wie mit lokal verfügbaren Daten arbeiten kann? Warum zusätzlich mit Flash rumärgern, wenn man mit Silverlight fast (!) die selben Anwendungen auf Desktop UND im Browser laufen lassen kann?

Ich finde Microsoft schafft keine intuitiv zu bedienende Entwicklungsumgebung, die einem Informatiker den nötigen Freiraum schafft, sich mit den eigentlichen Problemen aus BWL, Mathematik, Werbung/Marketing, Medizin, Forschung zu beschäftigen, die es mit Hilfe der Programmierung zu lösen gilt.

Nochmal, das ist nicht Aufgabe von WPF. Du bringst die explizite, gewollte Trennung von Design und Businesslogik wieder zusammen.

Stattdessen wird die Programmierumgebung/IDE/Technik zunehmend zum Problem des Informatikers. Wir müssen uns solange mit WPF, WCF, Sharepoint und andern tollen Techniken rumschlagen, bis wir für die Lösung des eigentlich "zu lösenden Problems" keine Zeit mehr haben.

War das mit Windows Forms und händischer Programmierung von Datenanbindung und Sicherheitsschicht je besser? Welches Argument spricht für manuelles Verarbeiten und Aktuellhalten von GUI Elementen (OnTextChanged... element.Text = element2.Text; etc.)? Welches Argument spricht für das Arbeiten mit Sockets und select() sowie der manuellen Implementierung von SSL oder anderen Sicherheitskonzepten, wenn WCF und Sharepoint das alles schon mitbringt? Faultheit, sich mit neuen Technologien zu beschäftigen?

Wer von Euch kann denn behaupten, dass er C#, WPF, WCF, Sharepoint und Asp beherrscht und zusätzlich in der Lage ist, ein kaufmännisches oder mathematisches Problem zu lösen ?

Ich beherrsche C#, WPF, WCF. Sharepoint brauchte ich noch nicht und ASP hat mit WPF nichts zu tun. Und nebenbei löse ich problemlos auch mathematische Probleme damit. Die Steuerungssoftware unseres Roboters ist komplett in C#/WPF geschrieben und tut exakt was sie soll, inklusive der Tatsache, dass sie die Position und Orientierung des Roboters auf dem Bildschirm 1:1 wiedergibt.

Was ist denn ein Programmierer wert, der all die Techniken beherrscht, aber sonst von Tuten und Blasen keine Ahnung hat. Soll der eine wissenschaftliche oder eine betriebswirtschaftliche sinnvolle Anwendung entwickeln?

Und was ist ein Entwickler wert, der eingefahren auf einer Schiene ist und heute alles noch von Hand programmiert? Kostet viel zu viel Zeit. Und Lehrgänge auf neue Technologien gibt es in allen Bereichen, auch für WPF etc.

Es ist eben nicht mal WPF was ich hinterfrage, sondern die unangemessen hohe Anforderung an einen C# Entwickler. 😉

... die es quasi nicht gibt, wenn man in der Lage ist, über den Tellerrand hinaus zu schauen und sich daran gewöhnt hat.

04.06.2012 - 20:40 Uhr

Wie wär's wenn man sowas einfach mal irgendwo bei Kassel oder Göttingen veranstaltet? Dann kann sich niemand über die Entfernung beschweren, weil's im Schnitt für alle nahezu gleich weit weg ist...

04.06.2012 - 02:19 Uhr

Nur um das mal allgemein anzumerken: ja, der WPF Designer im VS 2010 ist definitiv arg verbuggt. Ich hoffe, der des VS 2012 wird besser.

03.06.2012 - 12:52 Uhr

Äh, okay. Dann habe ich da etwas verwechselt. Danke.

03.06.2012 - 11:08 Uhr

Ich habe die Anmerkung von talla in jenem Thread so verstanden, dass ich mein Problem hier noch einmal erläutern soll, weil hier MS Mitarbeiter Support bei der Installation angeboten haben.

Also nochmal kurz: einige Komponenten, unter anderem das Microsoft .NET Framework 4.5 DEU Language Pack RC hängen während der Installation von VS 2012 RC bis ich sie händisch mittels Taskmanager beende. Wie ich inzwischen ergänzend mitteilen kann, hatte dieses manuelle Beenden weder auf den Installationsprozess noch auf die Funktionsfähigkeit des Studios und des Frameworks selbst negative Auswirkungen - jedenfalls keine, die ich bisher feststellen konnte.

Mein System ist ein Windows 7 Professional 64bit mit 8GB RAM. VS 11 beta war installiert, habe ich vor der Installation von VS 2012 RC aber eigenhändig deinstalliert.

Das System ist vergleichsweise überfrachtet mit allerhand Software. Vielleicht ist das ein Grund und es wird einfach mal wieder Zeit für eine Neuinstallation. Aber noch fehlt mir dazu die Zeit.

Unter anderem besitze ich Systemsoftware wie TuneUp, AutoIt und als Virenscanner die MS Security Essentials. Darüber hinaus laufen Dinge wie Steam, Spotify, Daemon Tools und NetLimiter.

Disclaimer: Mir ist klar, dass Ferndiagnose immer etwas von Lesen im Kaffeesatz, Knochenwerfen oder Glaskugelorakeln hat. Und da es inzwischen ja läuft, sehe ich mein Problem als gelöst an. Intention ist, nur darüber zu informieren, dass da bei jemandem ein solches Problem bestand und dieses vielleicht von den Verantwortlichen zu berücksichtigen wäre.

01.06.2012 - 13:41 Uhr

Hi Leute,

geht das nur mir so? Die Installation vom VS 2012 RC hängt seit über 'ner Stunde bei "Microsoft .NET Framework 4.5 DEU Language Pack RC" fest. Der "Punkte"-Indikator im Fenster ist in Bewegung, das Setup reagiert also noch, steckt nicht fest. Aber es tut sich einfach nichts mehr. Es geht nicht mehr weiter.

Hat jemand 'ne Idee?

//edit: hab den Kindprozess für die Language Pack Installation jetzt abgeschossen... jetzt geht's weiter. Sehr seltsames Verhalten.

Danke

Hendrik

30.05.2012 - 08:14 Uhr

Ich fürchte, du wirst immer nach einem bestimmten Begriff suchen oder explizit bestimmten Leuten folgen und dann permanent online sein müssen, um das zu realisieren. Ich glaube nicht, dass du Twitter komplett "einmal alles bitte" abscannen kannst. Das ist viel zu viel an Daten.

28.05.2012 - 01:55 Uhr

Kein Problem. Immer wieder gern.

27.05.2012 - 17:10 Uhr

Um deine Frage zu beantworten: schau dir mal das Thema **Delegates **an. Das ist aber eigentlich C# Grundlagen.

19.05.2012 - 21:09 Uhr

Boar, warum immer so weit weg??? grummel

Danke trotzdem für den Hinweis!

24.04.2012 - 06:30 Uhr

Wenn es unbedingt C# sein muss, und ich verstehe durchaus, warum, dann kann ich dir für einen Einstieg auch die Unity 3D Engine empfehlen (http://www.unity3d.com). Diese lässt sich wunderbar in C# programmieren und bietet enorme Möglichkeiten.

Beispielsweise programmieren wir vom RobOtter Club Hamburg (nein, das ist kein Tippfehler) unseren Otter 2 damit, obwohl's in erster Linie eine Spieleengine ist. Es

gibt sie auch in einer Free Version, die allerdings ein wenig eingeschränkt ist. Beispielsweise enthält sie keine vorgefertigten Wegfindungsroutinen, im Gegensatz zur Pro. Das ist allerdings keine Hürde, denn die kann man sich, genügend Hirnschmalz und Motivation vorausgesetzt, auch selber schreiben.

Darüber hinaus ist das Ding komplett erweiterbar mit eigenen Editoren und Plugins. Wir basteln zum Beispiel gerade an einem Strategie-Editor, der es uns ermöglicht, die Spielstrategie des Roboters quasi im Betrieb per Klickibunti zu ändern.

Schau's dir mal an! Ich find das Ding ziemlich cool. Es sei denn, du hast wirklich vor, alles komplett von Null an selbst zu schreiben.

22.04.2012 - 11:18 Uhr

Guck dir nebenbei mal das "Thumb" Control an! Das hat mir schon an so mancher Stelle weitergeholfen, wo es darum ging, mit der Maus irgendwas zu verschieben.

12.04.2012 - 12:08 Uhr

Ah, alles klar, unterschiedliches (bzw. bei C# überhaupt erst vorhandenes) Speichermanagement ist also der Grund für das unterschiedliche Verhalten zwischen C++ und C#. Wieder was gelernt.

12.04.2012 - 00:54 Uhr

Hat jemand eine Erklärung dafür, weshalb C++ das anders macht als C#?