Moin,
.NET 6 kann noch COM (Component Object Model)!
Leider wird tlbexp.exe nicht mehr für .NET ≥ 5 unterstützt.
Aber vielleicht Hilfe euch das Project:
https://github.com/dspace-group/dscom
Einfach folgenden Befehl in der Console aufrufen:
dotnet tool install --global dscom
Danach könnte genau so wie bei tlbexp.exe eine tlb aus einem Assembly erzeugen:
dscom tlbexport myassembly.dll
Außedem habe wir euch ein nuget-Package zu verfügung gestellt, mit dem man "ConvertAssemblyToTypeLib" wieder bekommt:
https://www.nuget.org/packages/dSPACE.Runtime.InteropServices/
Viel Spaß und lasst mal ein Like/Star da.
WPF und TCP haben erstmal wenig mit einander zu tun.
Was du sucht ist ein Dispatcher:
Ich häng mich mal gerade aus dem Fenster und gebe mal meine beschränkte Sichtweise wieder.
Das was jetzt kommt, kann auch gaaaanz anders gesehen werden - man darf mich gerne dafür rügen 😉
Insbesondere die Framework-Frage ist religiös.
Hier ein einfacher Entscheidungsbaum:
1.
Ihr könnt C#/.NET Framework und könnt mit WPF/WinForms UIs bauen.
Ihr habt noch wage Erinnerungen an PHP-Experimente und habt gehört, dass HTML5 und Bootstrap ganz gut sein sollen.
Ihr findet Responsive Webdesign gut https://de.wikipedia.org/wiki/Responsive_Webdesign.
Der Gedanke, dass man sich mit Progressive enhancement auf das Notwendigste konzentriert und später fancy Javascript hinzunimmt gefällt euch.https://de.wikipedia.org/wiki/Progressive_Verbesserung
Eure Website ist nicht besonder dynamisch und wenn man auf eine Button auf der Website klickt, dann darf sich die Seite auch mal neuladen.
->
.NET Core (≥2) + ASP.NET Core
serverseitiges Rendern von HTML (Razor, MVC)
Bootstrap als CSS-Framework
2.
Ihr glaubt, dass die Webseite mehr Dynamik braucht. Ihr scheut nicht davor Javascript/TypeScript zu erlernen.
Ihr findet allerdings objektorientiertes Programmieren gut. DependencyInjection mögt ihr https://de.wikipedia.org/wiki/Dependency_Injection.
Eine ordentliche Schichtenarchitektur https://de.wikipedia.org/wiki/Schichtenarchitektur findet Ihr wichtig.
->
.NET Core (≥2) + ASP.NET Core
WebAPI (RESTful)
Angular ≥7
Bootstrap, Angular Material https://material.angular.io/, oder selber bauen
PWA
3.
Ihr habt es voll drauf mit JavaScript/TypeScript. OO ist euch nicht immer wichtig. Ihr scheut nicht vor "bleeding edge"-Technologien.
Eure Entwickler brauchen keine Leitplanken. Die Gefahr von big-ball-of-techo-mutt seht Ihr nicht. Gerne baut ihr eure Microservice neu.
Die Halbwertszeit eure Anwendungen ist gering. Webpack-Config schreiben rockt.
->
.NET Core (≥2) + ASP.NET Core ... oder doch lieber node.js
WebApi (RESTful oder GraphQL)
React oder Vue
PWA
... ich finde #2 ganz gut
OT:
Ich glaube der David Tielke (keine Ahnung ob der hier im Forum abhängt) ist ein großer Gupta-Portierungs-Fan. Der kann euch sicherlich helfen.
Die liest eine DLL mit File.ReadAllLines ein?
Das ist Unsinn was da steht.
https://docs.microsoft.com/de-de/dotnet/api/system.io.file.readalllines?view=netframework-4.7.2
Mit "Sicherheits-Programm" hat das nicht viel zu tun, wenn man versucht UAC nachzubauen.
Außerdem gibt es kommerzielle Lösungen um den User mit sowas zu "nerven" (z.B. The Palo Alto Networks Traps https://www.paloaltonetworks.com/documentation/traps).
Ich hoffe, dass dies nur ein Experiment von dir ist um C#/.net zu lernen.
Daher hier zwei Anhaltspunkte:
string registry_key = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
using (Microsoft.Win32.RegistryKey key = Registry.LocalMachine.OpenSubKey(registry_key))
{
foreach (string subkey_name in key.GetSubKeyNames())
{
using (RegistryKey subkey = key.OpenSubKey(subkey_name))
{
Console.WriteLine(subkey.GetValue("InstallSource"));
Console.WriteLine(subkey.GetValue("DisplayName"));
}
}
}
Siehe dazu:
https://stackoverflow.com/questions/908850/get-installed-applications-in-a-system
Oder aber mit:
How to detect lunch or closing process?
Aber ich rate dir DRINGEND davon ab, sowas tatsächlich als ein Sicherheits-Programm in betracht zu ziehen.
Nach Remoting hätte man sicherlich WCF gesagt.
Man kann aber der Meinung sein, auch wenn man das .NET Framework verwendet, dass man das jetzt auch nicht mehr sagt.
Daher z.B. WebAPI (ASP.NET (core)) oder gRPC.
https://www.heise.de/developer/meldung/ASP-NET-Core-3-0-laeuft-nur-noch-auf-NET-Core-4206653.html
ASP.NET Core 3.0 läuft nur noch auf .NET Core
Diese Aussage hatten wir ja schon bei ASP.NET Core 2.0.
Diesmal passiert es wohl wirklich.
Auch wenn das oben schon gesagt wurde. Nochmal verstärkt für die Nachwelt.
Auch wenn MVVM nicht gerade einfach für Anfänger aussieht, sollten man das so nicht bauen!
Auch wenn der Code erstmal das tut was er tuen soll.
Später wird sowas die Wartungshölle!
All dein Code in Window_Loaded zu packen ist etwa so wie: Beim Hausbau die Heizungsinstallation im Vorgarten installieren zu lassen - Kann man machen, ist halt nicht wirklich gut
Aber das ist doch -Ansatzweise- sowas wie DeepCopy geworden.
Somit auch das was MrSparkle dir vorgeschlagen hat.
Nachtrag:
Ich hab das jetzt nicht im Compiler geprüft, aber führt
CopyValues(ref targetValue, sourceValue);
nicht zu
CopyValues<object>(ref targetValue, sourceValue);
somit zu einem falschen ...
Type t = source.GetType();
z.B. durch Serialisierung
Serialisierung will er ja gerade
> ){gray}
@MrSparkle: Oh ja hast ja recht 😃. Das man "Serialisierung" nicht selber implementiert, wurde ja schon diskutiert. Der Rest des MSDN-Artikels wird Glowhollow sicherlich weiter bringen.
Die MSDN beschreibt dies in den Remarks von MemberwiseClone:
Dein MemberwiseClone führt ein "shallow copy" durch.
Möchtest du ein DeepCopy, dann gibt es da viele Wege (z.B. durch Serialisierung).
Siehe dazu:
Sollte das nicht mit Windows Board-Mitteln gehen?
Siehe Anhang:
Hallo johnnycc,
so sollte es funktionieren:
private static void Main(string[] args)
{
string script = @"
return function (math, callback) {
var mjAPI = require('mathjax-node');
mjAPI.start();
mjAPI.typeset({
math: math,
mml: true,
}, function(data) {
callback(null, data.mml);
});
} ";
var func = Edge.Func(script);
Console.WriteLine(func("E = mc^2").GetAwaiter().GetResult());
}
Die Ausgabe sollte dann so aussehen:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block" alttext="E = mc^2">
<mi>E</mi>
<mo>=</mo>
<mi>m</mi>
<msup>
<mi>c</mi>
<mn>2</mn>
</msup>
</math>
Wird beim starten die node.dll nicht gefunden wurde, dann beachte dieses Issue:
https://github.com/tjanczuk/edge/issues/503
Infos zu edge.js:
https://github.com/tjanczuk/edge/tree/master#scripting-nodejs-from-clr
Infos zumathjax-node:
https://github.com/mathjax/MathJax-node
https://news.microsoft.com/de-de/microsoft-cloud-2019-rechenzentren-deutschland/
... und da geht sie hin die "Deutschland-Cloud"
Schon mal eine kurze Anmerkung:
obj, bin und nupkg gehören nicht ins Repo.
Bezüglich:
List<string> returnValue = new List<string>({ "Output Value" });
... was für ein Compiler verwendest du? Das sollte eigentlich nicht mal kompilieren 🤔
Ich glaube dieser Artikel wird dir weiterhelfen:
Bezüglich "Product activation" gibt es eine Vielzahl von kommerziellen Lösungen.
Ich habe gut Erfahren mit codemeter gemacht (sowohl mit Hardware Dongle als auch mit SmartBind-"Software-Dongle"):
Nächstes Jahr frage ich nach Blazor ... aber heute ist nicht der Tag 😉
Ich würde mal gerne von euch hören, was Ihr aktuell für Meinungen und Empfehlungen aussprecht, bezügliche der allseits beliebten Frage: "Welche Library bzw. welches Framework soll es sein? Angular, React oder Vue?"
Hier das fiktive Szenario:
Eine Horde von .NET/WPF/WinForms-Entwicklern (alle sehr erfahren) will nun mehr Web machen. Der eine oder andere hat ASP.NET- bzw. ASP.NET-Core-Erfahrung.
Auch hat der eine oder andere mal Knockout, Backbone.js, jQuery, Bootstrap ... gesehen.
Wir gehen mal davon aus, dass es eine SPA werden soll/muss.
The T:System.IO.FileStream object created by this method has a default T:System.IO.FileShare value of F:System.IO.FileShare.None; no other process or code can access the created file until the original file handle is closed.
https://msdn.microsoft.com/de-de/library/d62kzs03(v=vs.110).aspx
Ja nach Lizenzmodell gibt es auch noch einen klassischen "static activation key".
Volumenlizenzversionen verwenden in diesem Fall den gleichen Key ... soviel ich weiß.
Ich benutzte mal die OO-Begrifflichkeit "Methode".
Ob eine Methode static sein muss, hängt maßgeblich an der Klasse.
Ist eine Klasse statisch, dann werden die Methoden auch statisch deklariert.
Ob Console- oder Forms-App in beiden Fällen kannst du statische als auch nicht statische Methoden haben.
Nachtrag 10:48:
Auch deine Forms-App hat eine Program-Klasse.
Diese beinhaltet auch eine "static void Main"
Du solltest dir nochmal die Grundlagen C# und OO anschauen, dann wird es klar.
Wir haben das gerade beim Kaffee diskutiert.
Wenn es so kommt, dann finde ich das persönlich ne feine Sache.
Man kann gespannt sein, wie TFS/VSTS und GitHub verschmelzen.
Vielleicht bekommen wir dann auch private Git-Repos in GitHub für lau.
Auch wenn das BitBucket wohl unter druck setzen wird.
Und weil das hier ein .NET/C#-Forum ist natürlich dies hier (als alternative zu PHP):
SignalR macht wirklich Spass. Und das Demo (wie so gut wie jedes zweite SingalR-Demo) ist natürlich eine Chat-Anwendung.
Fehlermeldung:
Der aufrufende Thread kann nicht auf dieses Objekt zugreifen, da sich das Objekt im Besitz eines anderen Threads befindet.
Die Fehlermeldung deutet auf ein Thread-Problem hin. Irgendwas wird nicht im UI-Thread dispatched.
Schwieriger Fall.
Prüf mal folgendes:
@weismat: Danke für deine Rückmeldung
Bezüglich deiner Frage "Was meinst Du mit Callbacks...":
Im Fall der existierenden Anwendungen mit WCF wird teilweise duplex contract (two-way) verwendet.
Auf AMQP hab ich eigentlich nur gewartet 😃
Dies scheint in unserem Use Case mit unter auch eine sinnvolle Lösung zu sein.
Setzt einer von euch erfolgreich gRPC ein? Wie sind hier so die Erfahrungen?
Ich weiß: Inhaltlicher Sprung von MessageBus zu rein RPC
@LaTino: Danke für deine Rückmeldung
Bei NetMQ stören mich nur die Lizenzbedingungen (Angepasste LGPL v3).
Dies bedeutet immer ein erhöhter juristischer Aufwand (open source compliance).
Selber finde ich, dass zeroMQ bzw. NetMQ eine interessante Alternative ist.
@T-Virus: Danke für deine Rückmeldung.
Mit MQTT und .NET Core (wir oben von mir beschrieben) habe ich gute Erfahrungen gemacht - wenn publish/subscriber für die Applikation ausreicht.
Für mit Mitleser 😉 :
Sehr funktionale Lib (MQTT-Client als auch MQTT-Server - wenn es mal nicht mosquitto sein soll)
https://github.com/chkr1011/MQTTnet
Hier ist ja leider nicht mehr soviel los:
https://www.eclipse.org/paho/clients/dotnet/
@BhaaL:
Hatte deine letzte Frage ganz übersehen. Sorry 😃
In diesem Produkt wird sowohl "NetTcpBinding" als auch "NetNamedPipeBinding" verwendet.
In dem zweiten Fall wurde eine Interprozesskommunikation benötigt, die ein Ersatz für eine ältere COM/DCOM-Implementierung darstellt. Im Zuge der Migration wird ein RPC-Technologie gesucht, die sowohl den IPC als auch den RPC-Fall abdeckt.
I know: Auf pauschale Fragen gibt es häufig die pauschale Antwort "it depends"
Auch ich würde bei so einem Thread Antworten: "Kommt auf den Use case an"
Mich würde aber eure Erfahrungen mit RPC/IPC-Framworks in .NET Core interessieren.
Und zwar in den Fällen, in den es nicht pauschal heißt WebAPI mit ASP.NET Core (natürlich mit dem Architekturstil REST)
Zum Thema REST und ASP.net Core gibt es nun (auch in diesem Forum) genug Meinungen, Informationen und Austausch.
Zur Info:
Hier meine konkrete Frage und/oder Erfahrungsaustausch-Anfrage:
Was ist eure Erfahren mit RPC/IPC und/oder MessageBus-based Kommunikations-"Frameworks" in .NET Core ?
.net core unterstützt per sé erst einmal nur http-basierte Kommunikation
Das stimmt so nicht.
https://apisof.net/catalog/System.Net.Sockets
Ich verwende seit längerem MQTT in .NET Core
Kann es sein, dass ein ASP bei deiner Aussage fehlt?
@BhaaL: WCF möchte ich in der migrierten Anwendung nicht mehr haben.
Auch wenn es Client-Libs für WCF in .NET Core gibt, und auch wenn es Bestrebungen gibt WCF-Server in .NET Core zu betreiben. WCF soll raus.
Wenn ihr .net core einsetzen wollt, fällt WCF sowieso weg, und es muss eine WebAPI sein, weil ALLE .net core-Anwendungen im Grunde eine WebAPI sind
. Die Diskussion könnt ihr euch also sparen.
Das WCF weg fällt ist gekauft. Allerdings, dass es immer eine WebAPI sein muss, würde ich nicht so stehen lassen (bzw. würde ich das gerne mich euch diskutieren - wenn Ihr Zeit und Lust dazu habt).
Nur weil ich .NET Core verwende, heißt das ja nicht, dass ich zwangsweise WebAPI machen muss.
Parallel fallen auch einige der genannten message-Protokolle weg, schlicht weil sie .net Standard nicht unterstützen
Im Fall von MQTT gibt es eine ordentliche.NET Core Lib.
Aber ich gebe dir natürlich recht, es kommt auf den Use Case an.
In meinem Fall heißt dass, ich werde mehrere .NET Core Applikationen haben, die unter Umständen hochfrequent Daten austauschen wollen.
Natürlich möchte ich kein "SOAP+REST" ... um Gottes willen.
Vielleicht habe ich das nicht deutlich genug beschrieben.
Ziel ist es natürlich WCF (und somit auch SOAP) zu ersetzen.
Ich wollte nur eine Diskussion anregen, ob es immer pauschal WebAPI sein muss, wenn man eine alte SOAP-Implementierung loswerden will.
Möchtest du den Application Layer gleich mit wechseln? Oder soll der Austausch so passieren, dass die Clients das nicht merken?
Der Client soll auch auf .NET Core/Standard migriert werden.
Beim "Client" ist übrigens keine GUI-Anwendung mit gemeint.
Oder verwechselst du da Anwendungsprotokoll (SOAP) mit API-Architektur (REST)?
Nein verwechsel ich nicht.
Und was haben deine Stichpunkte unter "schnelle Antwort" mit deinem Wunsch zur Migration nach .NET Core zu tun?
Wir diskutieren das gerade im Team. Eine RPC-technik (oder ähnliches) die wir als Ersatz für WCF einsetzen können.
Moin,
ich hätte da mal eine Migrationsfrage.
Aktuell habe ich mehrere .NET Fullframework-Anwendungen.
Diese werde ich nach .NET Core bzw. Standard migrieren. Die Kommunikation der Anwendungen erfolgt mit WCF (SOAP).
Folgende Anforderungen werden durch die .NET Applikation aktuell erfüllt:*WCF-Kommunikation (teilweise hochfrequent – so viel eben WCF mit SOAP zulässt)
*Callbacks (nicht nur unidirektionale calls, sondern die Server senden an die Clients) _[edit 22.05.2018] _
*Die Schnittstelle soll nicht direkt vom Endanwender verwendet werden.
*Die Schnittstellen sind aktuell synchron implementiert – starkes request/response-Verhalten
Die schnelle Antwort war unter anderem:
*WebApi + SignalR (ich brauche Callbacks)
*nanomsg oder ZeroMQ
*MQTT oder AMPQ
*gRPC (…Callbacks machen da kein Spaß)
Jetzt könnte man pauschal WebApi (REST) rufen. Und für das Callback-Problem SignalR verwenden.
Was ist eure Meinung? Würde das gerne mal mit euch diskutieren.
Btw.: Ja die Anwendung soll unter Linux und unter Windows laufen (und ein wenig im Docker).
Hab ich das richtig verstanden?
Du möchtest sowas wie IdentityServer https://github.com/identityserver in WinForms, aber ohne OWIN/Katana und ASP.net (core) bauen/betreiben?
... why?
Sildes zu allen Vorträgen findet Ihr hier:
PWA:
https://www.slideshare.net/slideshow/embed_code/key/DbetnQ8hsJdSOS
MQTT:
https://www.slideshare.net/MarkLechtermann/mqtt-with-net-core
Eine Möglichkeit wäre mit EnumChildWindows zu arbeiten.
Siehe dazu:
https://msdn.microsoft.com/de-de/library/windows/desktop/ms633494(v=vs.85).aspx
[DllImport("user32.Dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool EnumChildWindows(IntPtr parentHandle, Win32Callback callback, IntPtr lParam);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
static extern int GetWindowTextLength(IntPtr hWnd);
Und über SetWinEventHook neue Fenster zu detektieren:
[DllImport("user32.dll")]
static extern IntPtr SetWinEventHook(uint eventMin, uint eventMax, IntPtr
hmodWinEventProc, IntPtr lpfnWinEventProc, uint idProcess,
uint idThread, uint dwFlags);
[DllImport("user32.dll")]
static extern bool UnhookWinEvent(IntPtr hWinEventHook);
Dies könnte ein wenig länger dauern bis i==5 ist:
i = i + 0
Auch nicht so gut:
Thread.Sleep(100);
Siehe dazu:
https://msdn.microsoft.com/de-de/library/system.windows.forms.timer(v=vs.110).aspx
This Windows timer is designed for a single-threaded environment where UI threads are used to perform processing.
Am 11.04.2018 um 18:30 Uhr findet das 9. Treffen der .NET User Group Paderborn statt.
Anmelden könnt Ihr euch wie immer hier:
http://dotnet-paderborn.azurewebsites.net/
PWA, Ionic, React und Angular - Was hat das mit .NET zu tun? Die Antwort ist ganz einfach: Wer heutzutage Anwendungen mit .NET Core/Standard bauen möchte, muss ich überlegen welcher GUI-Stack eingesetzt werden soll. Gerade wenn Applikationen auf dem Desktop, Mobile oder im Web laufen sollen, muss man sich dieser Frage stellen. Andreas und Dennis stellen euch Techniken vor, mit dem Ihr in der Lange seid cross/multi-platform Applikationen zu bauen. Euer Backend bleibt natürlich .NET Core und im Frontend kann es auch ein wenig HTML/CSS/JavaScript sein.
Agenda:
Progressive Web Apps (PWA)
Das offene World-Wide Web als App Store nutzen
Mit dem Aufkommen und der massiven Verbreitung der beiden Smartphone-Plattformen Android und iOS entstand auch die App Economy und mit ihr der sprichwörtliche ‚Goldrausch‘ im Rennen um die begehrten Plätze auf den Bildschirmen der mobilen Nutzer. Aktuelle Studien zeigen jedoch, dass die Anzahl und Nutzungsdauer von installierten mobilen Apps stetig sinkt. Wenngleich die aktuellen hybriden Frameworks wie bspw. Xamarin, Cordova oder React-Native viele der Probleme bei der Entwicklung von plattformunabhängigen mobilen Anwendungen gelöst haben, so haben sich jedoch die jeweiligen plattformspezifischen App Stores für das Auffinden, Bewerten und Installieren derselben kaum weiterentwickelt. Auch der – zumindest bei Apple und Microsoft sehr restriktive – Review Prozess beim Einspielen von neuen Anwendungsversionen wirkt heutzutage schon fast antiquiert. Hier springt die von Google initiierte Alternative zum Entwickeln von Progressive Web Apps hervor. Diese nutzen vor allem diverse Weiterentwicklungen in (mobilen) Browsern, um die Lücken zwischen reinen web-basierten und hybriden/nativen Anwendungen zu schließen. Der Vortrag zeigt, wie eine PWA aufgebaut ist, was die Technik heute bietet, und warum sich Microsoft diese als Rettungsanker für die (App) Leere im Windows (Mobile) Store auserkoren hat.
Andreas Gerlach – Diebold Nixdorf
Ionic meets Visual Studio Code
Ionic und Visual Studio Code, eine Synergie welche man erleben muss. Ich werde mit euch zusammen eine Smartphone App auf Basis von Cordova erstellen. Dabei werde ich auf die Relationen zum Angular Framework eingehen, damit ihr euch schnell und sicher in Ionic zu recht findet. Am besten ihr bringt euer eigenes Device mit, damit ihr Live und in Farbe mit mir coden könnt.
Was benötigt ihr?
Dennis Hering - Microsoft
Details findest Du hier:
http://dotnet-paderborn.azurewebsites.net/Events/Detail/14
Für Getränke und Snacks wird wie immer gesorgt.
Wenn Ihr eigene Ideen und Vorträge für die .NET User Group habt, dann meldet euch bei mir.
Wir freuen uns auf Euren Input.
Am 11.04.2018 um 18:30 Uhr
dSPACE GmbH
Rathenaustraße 26
33102 Paderborn
Weitersagen! – Teilen! – Liken! – Dabei sein!
Vielleicht hilft dir dieses Project weiter (ist allerdings in C++ und scheinbar ohne DirectShow):
https://github.com/flowerinthenight/windows-camera-tools
Blitzlicht wird über ...
flash -fname:<camera_friendly_name> [-state:<0|1|2>]
... aktiviert.
@Abt:
"ASP.NET Core MVC" gibt es nicht.
Wat? Kannst du das kurz erklären?
Auch in .NET Core benutzt du MVC, nur eben ASP.net Core MVC
Und Ja, man kann mit .NET Core starten ... sollte das auch.
Wenn du davon ausgehst, dass in deinem Beispiel die Variable _Zahl automatisch zum BackingField von der Property Zahl wird, dann liegst du da falsch.
Der Compiler wird dir das sogar sagen:
warning CS0169: The field 'X._Zahl' is never used
_Zahl und Zahl haben nichts miteinander zu tun.
Bei AutoProperties erzeugt der Compiler für dich ein Feld.
Dieses Feld wirst du im Code aber nie direkt verwenden.
Um dir das besser zu verdeutlichen kannst du dir mal ILSpy installieren.
Hier der IL.Code:
.field private int32 '<Zahl>k__BackingField'
Kann es sein, dass du beim anlegen eines Projektes diese Option aktiviert hast: "Create new Git repository"
(siehe Bild)
Da fragt einer, wie man heraus bekommt, ob die Grafikkarte defekt ist und man liest hier: "Pack sie in den Backofen".
Musste schon ein wenig schmunzeln …
Hier mal ein nicht so fantasievolle Ansatz:
Öffne mal den Windows „Event Viewer“.
Unter „Windows Logs > System“ meldet Windows eigentlich, dass der Grafikkartentreiber ein Problem festgestellt hat.
Ich würde bei der Fehlerbeschreibung vermuten, dass deine Grafikkarte (oder dein Motherboard) einen Defekt aufweist.
Es sollte schon eine WinForms-Anwendung sein.
Außerdem solltest du die PixelEditor-Klasse nicht "vor" die Forms-Klasse setzen, sondern besser in eine neue Datei.
Is ja Wochenende 😉 ...
Folgendermaßen bekommst du das Demo zum laufen:
this.pixelEditor1.APBox = this.pictureBox1;
this.pixelEditor1.TgtBitmap = (Bitmap)pixelEditor1.APBox.Image;