Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von DFDotNet
Thema: Wie ist der aktuelle Stand - C# zu SPS - Treiber/Assemblies
Am im Forum: Rund um die Programmierung

Hallo,

ich habe zufällig auch mit dem Bereich zu tun.
Geht es dir ausschliesslich um Siemens oder meinst du SPSen allgemein?
Man könnte sicherlich bei fast jeder SPS (z.B. CODESYS) ein entsprechende Benachrictigung bei Änderung eines Eingangssignals o.ä. über ein Kommunikationssystem deiner Wahl (OPC, Modbus, TCP/IP, UDP, ...) senden. Aber ich denke das muss dann zumindest in der SPS-Applikation realisiert werden. Dann musst du dich nur noch für den Übertragunsweg entscheiden und in der C#-Applikaiton auf die Benachrichtigung lauschen.
Oder denkst du da an was anderes?

Thema: Visual Studio 2008: Kompilieren und Speichern nach Hinzufügen einer Klassendatei nicht mehr möglich
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo,

nachdem ich alles ausprobiert habe aber nichts half, war ich doch gezwungen den Rechner komplett neu aufzusetzen. Jetzt geht es wieder.
Trotzdem wäre es hilfreich zu wissen, woran es gelegen hat. Nur für den Fall, dass das Problem nochmal auftauchen sollte.
Also falls jemand eine Idee hat, oder das gleiche Problem schonmal hatte, gebt hier Bescheid.
Gruß

Thema: Visual Studio 2008: Kompilieren und Speichern nach Hinzufügen einer Klassendatei nicht mehr möglich
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo,

ich habe seit ca. einer Woche das Problem, dass Visual Studio 2008 nicht mehr kompilieren kann, nachdem ich eine neue Klassendatei in ein bestehendes Projekt eingefügt habe.
Anstatt das Projekt zu kompilieren erscheint ein "Speichern"-Dialog in dem ich die Projektdatei speichern soll. Wähle ich die Projektdatei aus kommt die folgende Fehlermeldung:

Fehler
"Fehler beim Speichern der Projektdatei "XYZ.csproj". This project object has been unloaded from the MSBuild engine and is no longer valid."

Auch beim Schliessen der Umgebung kommt diese Meldung und ich kann das Projekt nicht speichern. Bearbeite ich allerdings die Projektdatei mit einem Text-Editor, kann ich die neue Klasse menuell einfügen und dann auch das Projekt wieder in VS2008 öffnen und normal kompilieren. Aber eben nur wieder solange, bis ich in VS eine neue Komponente ins Projekt einfüge.
Bei mehreren Projekten in der Solution tritt der Fehler nur in dem Projekt auf, das ich geändert habe.
Ich nutze Visual Studio 2008 Professional und programmiere in C#, das Betriebssystem in Windows 7, 32Bit.
Es scheint mir so zu sein, dass das Problem auftrtitt seit ich testweise VC#2010 Express installiert habe, sicher bin ich mir aber nicht.

Ich habe schon alles versucht, was mir einfällt.
- VS2010 deinstalliert und bereinigt
- VS2008 und alle .NET-Framework-Versionen neu installiert bzw. repariert
- alles mögliche ergoogelt und ausprobiert (z.B. Zurücksetzen aller VS2008 Einstellungen)

Auch wenn ich neue Projekt erstelle tritt das Problem auf, sobald ich das erste mal eine neue Klassendatei hinzufüge und dann kompilieren will.
Ich hoffe es hat noch jemand eine Idde, die nicht mit Formatieren des Rechners zu tun hat?

MfG

Thema: Steuerelemente passen ihre Position automatisch anderen an
Am im Forum: GUI: Windows-Forms

"FlowLayoutPanel"
um die Liste zu erweitern.

In deinem Fall, dass ein Button unter Text vriabler Länge "klebt" würde ich
- ein FlowLayoutPanel auf Vertical stellen
- das Label mit dem Text auf AutoSize
- Label und Button ins FlowLayoutPanel
->Fertig.

Thema: Wie nennt man es, wenn ein Programm ein Script ausführen kann? :o
Am im Forum: Smalltalk

Meinst du vielleicht die DLR?

Thema: Für jedes Objekt (hier: Com-Port) einen eigenen Satz von Controls erzeugen
Am im Forum: GUI: Windows-Forms

Hallo Sm|_|,

Ich habe bei einem meiner Projekte ein ganz ähnliches UI für die Kommunikation über serielle Schnittstellen. Ich habe ebenfalls ein UserControl erstellt, was je nach Auswahl in einer ComboBox die Daten des ausgewählten Ports anzeigt, das ist also meiner Meinung nach der richtige Weg um so etwas komfortabel zu lösen.

Um das ganze in ein Usercontrol auszulagern würde ich empfehlen die Controls im Designer aus der Form auszuschneiden und im Designer des usercontrols einzufügen. Leider muss man danach aber die Eventhandler neu erstellen, oder eben die Methoden ebenfalls rüberkopieren und neu zuweisen.

Zitat von Sm|_|
edit:
Ich nutze VS 2005...

hat es einen bestimmten Grund,dass du VS2005 nutzt?
Grade für eine akademische Abschlussarbeit wäre es doch bestimmt besser aktuelle Technik einzusetzen, oder? (nur so am Rande)

Viel Erfolg

Thema: Beim Starten des Dienstes beim Systemstart: Der Zugriff auf den Anschluss COM1 wurde verweigert
Am im Forum: Rund um die Programmierung

Du könntest einfach mit einem Timer nach ein paar sekunden noch einmal versuchen den Port zu öffnen.
Und das notfalls so oft, bis es schließlich klappt.

Thema: [gelöst] Threadsicherer Zugriff auf Dictionary funktioniert trotz lock nicht
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,

sorry, dass ich jetzt erst daruf antworte, ich kam erst heute morgen wieder dazu nach der Sache zu schauen. Ich habe das Problem aber schließlich doch noch gefunden und beseitigen können.
Ein anderer Thread war es nicht. Das hätte mich auch gewundert, denn das sollte ja durch das lock-Statement abgefangen sein.

Ich konnte es jetzt soweit zurückverfolgen, dass ich an den Anfang und das Ende von fetchSettings() je einen Breakpoint gesetzt habe.
Beim 1. Aufruf der Methode wurde der Breakpoint am Anfang schon das 2. mal erreicht, bevor der Am Ende das erste mal erreicht wurde.
Da musste also irgendwo der Haken liegen. Ich habe dann herausfinden können, dass durch "irgend"ein event in der Rahmenanwendung das durch das 'fetchen' der settings ausgelöst wird, eine andere Komponente von mir dazu gebracht wird, die Methode GetSettings() nocheinmal aufzurufen. Der 2. Aufruf kam also aus dem selben Thread und geschah (wenn auch indirekt) innerhalb des 1. Aufrufes.
Allerdings nur beim 1. mal, so dass keine endlose Rekrsion entstand. Durch das weiterleiten über mehrere events war der StackTrace aber so unübersichtlich, dass man gar nicht mehr sehen konnte, dass die Aufrufe ineinander geschachtelt waren, man sah nur noch graue DynamicInvoke- und Invoke-statements im StackTrace-Fenster. Jedenfalls konnte ich dadurch, dass ich meinen anderen EventHandler erst zu einem späteren Zeitpunkt registriere, das Problem beheben.

Vielen Dank für eure Tipps, die den Denkanstoß für die Suche in die richtige Richtung gegeben haben!

Thema: [gelöst] Threadsicherer Zugriff auf Dictionary funktioniert trotz lock nicht
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo herbivore,

Zitat von herbivore
das kann dann sein, wenn das Objekt, das von _cache referenziert wird, beim zweiten Aufruf ein anderes ist.

Ist nicht der Fall. Das objekt wird nur einmal erzeugt und zugewiesen:


private Dictionary<ushort, ISettings> _cache = new Dictionary<ushort, ISettings>();

Zitat von herbivore
Oder wenn executingMethod außerhalb der Methode vor dem ersten Aufruf auf true gesetzt wird.

Ist nicht der Fall. Die variable habe ich nur zum testen eingeführt und sie wird nirgends sonst außer an den gezeigten Stellen verwendet.
Zitat von herbivore
Bau ein Projekt, dass nur den absolut nötigen Code enthält. Ersetze dass Fetch durch eine leere (Warte-)Schleife.

Das werde ich jetzt machen.
Sehr merkwürdig alles...

Thema: [gelöst] Threadsicherer Zugriff auf Dictionary funktioniert trotz lock nicht
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

So, das habe ich jetzt auch mal gemacht. Beim überprüfen des StackTrace ist aber auch nichts weiter herausgekommen, als vorher. Add wird immer nur aus der Mehtode heraus aufgerufen, die ich schon gepostet hatte. Im StackTrace den ich in der Add()-Methode bekomme ist fetchSettings() NICHT enthalten.
Aber was mich stutzig gemacht hat:
Wenn ich in der Methode Add (oder auch außerhalb, also in die Zeile, wo Add aufgerufen wird) einen Brakpoint setze, sehe ich, dass die Zeile fetchSettings(id) darüber grau hinterlegt ist, also offenbar gerade ausgeführt wird. Allerdings ist sie wie gesagt nicht im aktuellen StackTrace enthalten. Also wird sie wohl in einem anderen Thread gerade ausgeführt.

Um das zu überprüfen habe ich mal testweise folgendes Konstrukt eingefügt:



private bool _executingMethod = false;

public ISettings GetSettings(ushort id)
{
  lock (_cache)
  {
     try
     {
       if (_executingMethod)
       {
         throw new Exception("This is not possible !!!"); //diese Stelle wird erreicht!
       }
       _executingMethod = true;
    
       //hier steht wieder der normale Methoden-Inhalt
       //(zur Übersichtlichkeit weggelassen)
       ...

     }
     finally
     {
       _executingMethod = false;
     }
  }
}

Das mag etwas merkwürdig aussehen, aber es zeigt anhand der Stelle mit der Exception dass die Methode 2x parallel ausgeführt wird.
Das kann nach meinem Verständnis nicht sein, wenn mittels lock() synchronisiert wird, oder?

Thema: [gelöst] Threadsicherer Zugriff auf Dictionary funktioniert trotz lock nicht
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Zitat von Abt
Es ist in diesem Fall schon recht trivial.
Aber ich versteh nicht, wieso Du nicht einfach die Dinge machst, die man Dir empfiehlt; zB MrSparkle.
Lieber erfindest das Rad neu..?
Sorry, das hatte ich nicht erwähnt. Das hatte ich vorher schon gemacht.

Der StackTrace zeigt mir, dass die Methode von 2 auf dem GUI sichtbaren Elementen aufgerufen wird. Es gibt keine Stelle (außer der geposteten) an der das Dictionary verändert wird.
Zitat
Zudem die Aussage von herbivore
Zitat
irgendeine der von dir getroffenen Annahmen wird falsch sein. Sonst würde keine Exception kommen.

Ich bezweifel, dass es ein hochkomplizierter und nicht nachvollziehbarer Fehler ist.

Das sehe ich eigentlich genauso. Darum habe ich meine Aussagen ja auch mehrmals überprüft. Dummerweise bin ich mir mittlerweile ziemlich sicher, dass sie tatsächlich stimmen. Das verwirrt mich umso mehr.

Zitat von chilic
Dann wärs doch ne Idee das ganze mal zu debuggen und zu schauen, was im Dictionary drin steht wenn CntainsKey aufgerufen wird (das dann false zurückliefert?) und was drin steht wenn der Eintrag nochmal geschrieben werden soll.

Das habe ich auch getan. Wie erwartet, ist der Inhalt zunächst leer, in dem Moment, wo der Wert geschrieben werden soll, aber nicht.

Ich werde wohl mal deinen Vorschlag angehen ein eigenes Dictionary abzuleiten und darin zu debuggen. Mal sehen, was das ergibt

Thema: [gelöst] Threadsicherer Zugriff auf Dictionary funktioniert trotz lock nicht
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,

erstmal Vielen Dank für die vielen Antworten.
Zuerst dachte ich, ich hätte eine ganz blöden Fehler gemacht, aber die weiteren Beiträge haben dann ja gezeigt, dass es doch nicht so trivial zu sein scheint.

@T-Virus:
Ja, der Code ist nur schnell nachgetippt und auf die relevanen Stellen beschränkt. Alles andere (aufrufende Klassen etc) wäre zu unübersichtlich und spielt auch keine Rolle.
Die relevanten Teile sind wirklich alle enthalten. Einen zweiten Aufruf an irgendeiner anderen Stelle, an der etwas ins dictionary gepackt wird o.ä., gibt es nicht. Das habe ich mit der Symbolsuche mehrmals überprüft. Das Dictionary bearbeitet niemend sonst.

Zitat von "chilic"
Ich finds seltsam dass innerhalb der paar wenigen Instruktionen (bis auf die Methode fetch...) so oft "irgendjemand" die ID einfügen kann, dass es hier öfter zu Problemen kommt.
Mach die Abfrage mit dem Contains nochmal nach dem fetch und zähl wie oft das vorkommt.

Es ist noch seltsamer.
Es ist nämlich so, dass gar nicht viel passiert, bis der Fehler auftritt. Die Methode wird einmal aufgerufen, dann wird richtigerweise der erste Eintrag erstellt.
Gleich beim 2. Aufruf tritt dann der Fehler auf. Danach aber nie wieder.

Das einzige, was mir noch einfällt, was evtl interessant sein könnte, ist dass die methode fetchsettings() beim 1. Aufruf u.U. länger braucht, als bei den späteren Aufrufen, da sie ihrerseits auf eine andere Resource zugreift, die beim 1. Aufruf initialisiert werden muss.

Ich werde gleich mal versuchen das Problem mit einem kleinen eigenständigen Tool nachzustellen, ohne das ganze Framework was hier noch drumherum ist.

Thema: [gelöst] Threadsicherer Zugriff auf Dictionary funktioniert trotz lock nicht
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Halllo,

ich habe gerade ein merkwürdiges Problem beim Zugriff auf ein Dictionary, das ich als Cache nutzen möchte um eine bestimmte Operation nicht unnötigerweise mehrmals ausführen zu müssen, wennn das Ergebnis schon bekannt ist.
Der Zugirff auf den Inhalt des dictionaries kann aus mehreren Threads erflgen, darum habe ich das ganze in ein lock() gepackt um Inkonsistenzen zu vermeiden. Sowohl die Abfrage, ob der Schlüssel schon vorhanden ist, als auch das Einfügen des Schlüssel-Wert-Paares stehen innerhalb des lock-Statements:


   private Dictionary<uhsort, ISettings> _cache = new Dictionary<ushort, ISettings>();
   private readonly object SEMAPHORE = new object();

    public ISettings GetSettings(ushort id)
    {
      lock (SEMAPHORE)
      {
        if (_cache.ContainsKey(id))
        {
          return _cache[id]; //return cached result
        }
        else //not yet in cache
        {
          ISettings result = fetchSettings(id); //add new entry to cache

          _cache.Add(id, result); //ArgumentException occurs here! (key already existing)
          return result;
        }
      }
    }

Trotzdem tritt beim Einfügen neuer Einträge manchmal eine ArgumentException auf:
Fehler
An item with the same key has already been added.


Es wird an keiner anderen Stelle auf das Dictionary zugegriffen, auch das lock-object wird nirgends sonst verwendet.
Kann mir jemand erklären, wie das sein kann? Habe ich die Arbeitsweise von lock() doch nich nicht richtig verstanden?

Danke!

Thema: DataGridView Row in den sichtbaren Bereich schieben
Am im Forum: GUI: Windows-Forms

sollte mit


DataGridView.FirstDisplayedCell
gehen, wenn ich mich nicht irre

Thema: Resource Refactoring Tool funktioniert nicht unter Visual Studio 2008 / Windows 7
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo,

hat jemand von euch das Resource Refactoring AddIn unter einem deutschen Visual Studio 2008 unter Windows 7 am laufen?
Bei mir funktioniert es nicht, es wird zwar nach der Installation im AddIn-Manager angezeigt, aber der Menübefehl "Extracct to Resource" wird bei einem Rechtsklick auf einen String nicht angezeigt.
Auch im "Anpassen"-Dialog erscheint er in keiner Kategorie.
Auf meinem alten Rechner (ebenfalls VS2008, aber Windows XP) funktionierte das einwandfrei.
Andere AddIns (GhostDoc, VSBuildStatus, ..) funktionieren auch.

Weiß jemand Rat?

Danke!

Thema: Gleiches ToolTip für mehrere Controls verwenden ok?
Am im Forum: GUI: Windows-Forms

Hallo ironnie,

meiner Meinung nach ist das genauso gedacht. Mehrere Instanzen wären unnötiger Overhead.
Wenn du den Tooltip im Designer einfügst und bei jedem Control einen Text eingibst, geschieht im *.Designer.cs-File genau das gleiche, wie du hier geschrieben hast.
Das selbe gilt auch für ErrorProvider.

Gruß

Thema: [erledigt] Einer Methode eine statische Klasse als Parameter übergeben
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,

nein, das geht nicht.
Als Parameter können nur Objekte (also Instanzen von Klassen oder Werttypen) übergeben werden.
Was möchtest du denn damit erreichen?
Wenn es darum geht, dass innerhalb der Methode bestimmte andere Methoden einer bestimmten statischen Klasse aufgerufen werden sollen, kannst du das evtl auch mit Delegaten (also quasi Zeiger zu den gewünschten Funktionen) lösen.
Alternativ kannst du die Klasse auch nicht-statisch machen und eine Singleton-Instanz deiner Klasse übergeben.

Gruß

Thema: Splitter: Mindestgröße für die Bereiche festlegen
Am im Forum: GUI: Windows-Forms

Im SplitContainer gibt es die Eigenschaft 'Panel1MinSize', vielleicht kannst du damit was anfangen?
Ansonsten das SplitterMoving-event abbonieren und bei Bedarf das Flag Cancel=true setzen.

Thema: Mehrere ToolStripMenuItems klicken ohne es auszublenden
Am im Forum: GUI: Windows-Forms

Gern geschehen.

Zitat
Dann ist sogar

ParentMenu.DropDown.AutoClose = false;
der wohl noch einfachere Weg.

Stimmt, allerdings kannst du es mit meiner Variante auch von einzelnen Menüpunkten abhängig machen. Manchmal kann das auch praktisch sein.

Thema: Mehrere ToolStripMenuItems klicken ohne es auszublenden
Am im Forum: GUI: Windows-Forms

Hallo,

auch wenn das Thema glaube ich schonmal besprochen wurde, ich habe es in etwa so gelöst:

Für alle Items, die das Menü nicht schliessen sollen, dass Closing-event registrieren und so implementieren:


    private void menuItem_Closing(object sender, ToolStripDropDownClosingEventArgs e)
    {
      e.Cancel = e.CloseReason == ToolStripDropDownCloseReason.ItemClicked;
    }

Thema: GPL-Komponente kapseln und in closed-source software verwenden?
Am im Forum: Rund um die Programmierung

Da hast du recht, ich merke auch grad, dass ich den Satz sogar falsch verstanden hatte, weil ich ihn nur überflogen habe.
Nicht "module B" ist irrelevant, sondern "the fact...".

Aber der Sinn bleibt der gleiche: Ein Wrapper ist nicht zulässig, bzw. kann die Auswirkungen der GPL-Lizenz auf weitere proprietäre Programmteile nicht einschränken.

Thema: GPL-Komponente kapseln und in closed-source software verwenden?
Am im Forum: Rund um die Programmierung

Auf so ein Beispiel antwortet die GPL-FAQ (glaube ich) auch:

http://www.gnu.org/licenses/gpl-faq.html#GPLWrapper

Zitat von GPL-FAQ
[...]module B is legally irrelevant

Thema: GPL-Komponente kapseln und in closed-source software verwenden?
Am im Forum: Rund um die Programmierung

Zitat von "inflames2k"
Ich kann zu dem auch nicht glauben, dass nur weil eine dritte Person ein Plugin zu meiner Anwendung schreibt ich deren Lizenz ändern müsse. - Woher soll ich denn auch erfahren, dass Max Muster dies getan hat, wenn ich weder direkt noch indirekt Kontakt mit ihm habe?

Die GPL-FAQ sagt doch wörtlich:
Zitat
if the program uses only simple fork and exec to invoke and communicate with plug-ins, then the plug-ins are separate programs [...] If the program dynamically links plug-ins, and they make function calls to each other and share data structures, [...] In order to use the GPL-covered plug-ins, the main program must be released under the GPL or a GPL-compatible free software license

Wenn man also PlugIns für ein Framework schreibt, dass Dependency Injection oder ähnliche Mechanismen verwendet, kommt man in die Bredouille, dass man das Hauptprogramm unter GPL (oder kompatible Lizenz) stellen müsste um GPL-Libs für ein PlugIn zu verwenden. wenn man das aber nicht tun kann, da das Hauptprogramm anders Lizenziert ist, steht man in einer Sackgasse und kann die schöne GPL-Komponente leider nicht verwenden.




Zitat von "herbivore"
die Klarstellung "Free as in Freedom" ist nur im Englischen nötig, denn wo die Engländer nur das Wort free haben, gibt es im deutschen frei und kostenlos.
Das ist mir klar, ich meinte damit nur, dass man als Anwender in der Benutzung der GPL-Bibliotheken keinesfalls frei ("wie in Freiheit") ist, da man schließlich einiges beachten muss. Ich muss zugeben, dass ich mich bisher nicht tiefgehender mit der GPL beschäftigt habe (ich war nur mit der LGPL in Berührung gekommen). Darum war mit die Tragweite und - vor Allem - der virulente Character nicht bewusst.
Zitat von "herbivore"
Du wirst also damit leben müssen, den Willen der Autoren zu respektieren, egal welche Lizenz sie verwenden.

Selbstverständlich. Aber schade ist es trotzdem ;-)

Thema: GPL-Komponente kapseln und in closed-source software verwenden?
Am im Forum: Rund um die Programmierung

Zitat von inflames2k
Interessanter Gedanke, vorallem in Bezug auf Anwendungen die Plugin-Systeme beinhalten.

Wenn ein Nutzer der Anwendung ein Plugin schreibt, was auf eine GPL Bibliothek zugreift kann ja keiner vom Entwickler verlangen seinen Source offen zu legen. Lediglich das Plugin selbst müsste dann aus meiner Sicht unter die GPL gestellt werden.

Auf der GNU-Website habe ich dazu diese Infos gefunden:

http://www.gnu.org/licenses/gpl-faq.html#GPLWrapper
http://www.gnu.org/licenses/gpl-faq.html#GPLAndPlugins
http://www.gnu.org/licenses/gpl-faq.html#NFUseGPLPlugins

Es scheint also tatsächlich so zu sein, dass man dann den Code des gesamten System offenlegen müsste. Also auch den der Kern-Komponente und aller PlugIns.
Je mehr ich mich mit der GPL beschäftige, desto mehr bekomme ich den Eindruck, dass der Slogan "Free as in Freedom" (-> siehe hier) nicht wirklich passt.
Denn der "virale" oder "virulente" Character der Lizenz (auch wenn GPL-Anhänger das wohl nicht hören wollen), schränkt die Nutzung (und damit auch die Verbreitung der GPL-Software) wirklich deutlich ein. Vor Allem, wenn bei größeren Projekten andere Parteien mit anderen Lizenz-Modellen involviert sind.

Thema: GPL-Komponente kapseln und in closed-source software verwenden?
Am im Forum: Rund um die Programmierung

Hmm, dann ist es doch so wie befürchtet.
Dann werde ich darauf wohl verzichten müssen.
Es geht um ILNumerics.Net. Die Haupt-Bibliothek steht unter LGPL, aber ILNumerics.Drawing steht leider unter GPL.
Evtl. kontaktiere ich den Autor auch mal direkt.
Danke schonmal für die Antworten.

Thema: GPL-Komponente kapseln und in closed-source software verwenden?
Am im Forum: Rund um die Programmierung

In anderen Threads wurde ja schon reichlich über GPL-Lizenzen diskutiert. Ich habe aber trotzdem nochmal eine konkrete Frage.
In GPL in Teilen meines Softwaresystems ist ja die Rede davon, dass man die GPL-Komponent quasi "kapseln" kann und sie nur noch 'indirekt' verwendet.

Ich stehe gerade vor dem Problem, dass ich gerne eine GPL-V3-Lizenzierte Bibliothek in einer kommerziellen Software einsetzten möchte.
Natürlich kann ich nicht den Quellcode des gesamten Projektes offenlegen. Nicht zuletzt, weil darin auch verschiedene 3rd-Party Komponenten verwendet werden, zu schützendes Know-How darin steckt usw, usw...

Die Struktur sieht so aus, dass ich eine DLL habe, welche intern wiederum Klassen aus der GPL-Bibliothek verwendet. Diese DLL kapselt sozusagen die Verwendung der GPL-Komponente. Alle anderen Komponenten verweisen nur auf diese DLL und nicht direkt auf die GPL-Bibliothek. Es wäre kein Problem diese eine von mir entwickelte DLL mit dem direkten Verweis auf die GPL-Lib auch unter GPL zu stellen und den Source-Code zu veröffentichen, aber das dürfte sich natürlich nicht auf das gesamte Projekt auswirken.
Wenn ich die GPL richtig verstanden habe, müsste ja wiederum jede Komponente, die meine eigene GPL-Bibliothek verwendet, auch wieder unter GPL stehen. Aber gibt es da nicht eine Grenze, bzw. Ausnahme, da ich ja Autor und Rechteinhaber dieser Komponente bin?

Kann das so funktionieren und wäre das rechtlich (eurer Meinung nach) in Ordnung?

P.S.: Ich weiß natürlich, dass hier niemand rechtlich verbindliche Einschätzungen geben kann, aber eine Diskussion und Meinungsaustausch zum Thema wäre trotzdem hilfreich.

Thema: 3D Graph Library gesucht
Am im Forum: GUI: Windows-Forms

Hallo,

ich wollte nochmal kurz Rückmeldung geben.
ILNumerics.Net ist ziemlich genau das, was ich gesucht habe.
Gratis, OpenSource, jede Menge Funktionen und gute Dokumentation.

Lustig ist, dass das Beispiel-Bild, das ich oben angehängt habe, offenbar auch damit erstellt wurde, was ich vorher nicht wusste ;)

Damit kann man z.B. wunderbar mit wenigen Zeilen eigenem Code einen Funktionsplotter erstellen.

Danke!

Thema: 3D Graph Library gesucht
Am im Forum: GUI: Windows-Forms

Hallo dN!3L,

das sieht viel-versprechend aus. Ich werde mal ausprobieren, wie weit ich damit komme.
Danke schonmal!

Thema: 3D Graph Library gesucht
Am im Forum: GUI: Windows-Forms

Hallo,

kennt jemand von euch eine gute OpenSource-Bibliothek, mit der man 3D Graphen plotten kann?
Also in etwa wie das angehängte Bild.

Es sollte möglichst nicht auf WPF basieren, da ich damit noch keine Erfahrung habe.
In den einschlägigen Quellen (z.B. Code Project) habe ich leider nichts brauchbares gefunden.

Gruß

Thema: Designer kann Control nach umbenennen des Typs nicht mehr hinzufügen oder anzeigen
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Ich habe eine Lösung gefunden, aber das ist wohl eher ein Workaround:

- Visual Studio beenden
- alle 'bin' und 'obj' Ordner in der Solution löschen
(ich war bisher immer davon ausgegangen das der Inhalt dieser Ordner durch "Bereinigen" gelöscht wird, aber das ist offenbar nicht so)
- Solution wieder öffnen
- Neu Erstellen

-> umbenanntes Control kann ganz normal verwendet werden.

Aber vielleicht hat ja jemand noch eine einfachere Variante (oder vielleicht sogar eine Erklärung dafür) ?