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 CrocodileDundee
Thema: Wie kann ich ein Interface aus einer anderen DLL nutzen?
Am im Forum: Grundlagen von C#

Hallo Abt,
danke für deine schnell Reaktion. Ich hab's aber noch nicht ganz kapiert, deshalb formulier ich es nochmal anders:

Wenn ich eine Klasse über ein Interface verwenden will, so muss ich doch in dieser Klasse das Interface bekannt machen, also


    public class Class : Interface
    {
          ...
    }

Mein Problem ist aber, dass dieses Interface komplett woanders liegt, weil die Klasse als dll zur Verfügung gestellt werden soll, d.h. die Klasse weis nix von dem Interface.

Wie kann ich denn meiner Klasse dem Interface bekanntmachen?

Gruß
Frank

Thema: Wie kann ich ein Interface aus einer anderen DLL nutzen?
Am im Forum: Grundlagen von C#

Hallo zusammen,
ich möchte meine Anwendung mit Interfaces entkoppeln und bin dabei auf ein Problem gestoßen.

Ich habe in C# eine Klasse geschrieben, die ich als dll meinen verschiedenen Anwendungen bereitstelle.

Das Problem ist nun, daß diese Klasse doch von dem Interface erben müßte, über welches ich
zugreifen möchte.

Dieses Interface ist aber natürlich der Klasse aber nicht bekannt, weil komplett extern.

Also folgendes ist halt momentan nicht möglich:



    public class dllClass : IExternesInterface
    {
          ...
    }


Gibt es eine Möglichkeit, daß ich die Klasse trotzdem als externe dll in mein Projekt einbinde und über ein Interface darauf zugreifen kann?
Oder mach ich da einen generellen Denkfehler?

Danke und Gruß
Frank

Thema: Wie kann ich beim XML Reader Exceptions voneinander Unterscheiden?
Am im Forum: Datentechnologien

Hallo zusammen,
ich parse eine XML-Datei mit XMLReader.

Dabei möchte ich zwischen den Exceptions
- "Unerwartetes Dateieende" und
- "Fehlendes Start-Element" (d.h. ein Knoten wurde geschlossen, der vorher nicht geöffnet wurde)
unterscheiden können.

Die Property "Message" möchte ich dazu nicht verwenden, da deren Formulierung sich eventuell ändern könnte und das Programm auch auf verschieden-sprachigen Systemen laufen soll.

Auch die Property "HRESULT" bietet mir keine Unterscheidungsmöglichkeit, da der zurückgegebene Errorcode immer gleich ist (0x80131940).

Und außerdem werden beide Exceptions mit der Klasse "XmlException" abgefangen.

Alle übrigen Properties der Exception-Klassen scheinen auch keine Unterscheidungsmöglichkeit zu bieten.

Bin daher momentan ziemlich ratlos und hoffe auf einen Tipp von euch.

Vielen Dank und viele Grüße
Frank

Thema: Welche Methode die Beste um schnell Dateien zu kopieren?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo zusammen,
in meinem Projekt möchte ich teilweise sehr viele kleine (ca. 1000 x 500kB) oder auch wenige große Dateien (ca. 1-2 x 2GB) von einem USB-Stick, der als Netzlaufwerk konfiguriert ist, auf die Festplatte des PCs kopieren.

Die Performance des File.Copy-Befehls scheint mir dabei etwas gering zu sein.
Deshalb habe ich auch schon nach anderen Klassen Ausschau gehalten.

- File.Copy
- StreamReader/Writer
- FileStream

Welche davon ist denn (zumindest tendenziell) die schnellste Methode?
Oder gibt es noch andere, die vielleicht noch schneller sind.

Danke und Gruß
Frank

Thema: Wie kann ich überprüfen, ob ein Netzlaufwerk bereit ist?
Am im Forum: Netzwerktechnologien

Hallo zusammen,
ich greife in meiner Windows-Forms-App auf ein Netzlaufwerk zu.
Manchmal kommt es vor, daß obwohl es verfügbar ist, ich über die App nicht darauf zugreifen kann und es auch im Windows-Explorer als "nicht bereit" angezeigt wird (Icon mit rotem Kreuz).

Wenn dies der Fall ist, kann ich dies einfach mit einem Klick im Explorer auf das Netzlaufwerksymbol beheben, sofort wird es als "bereit" angezeigt und ich kann auch über die App darauf zugreifen.

Deshalb meine Frage:
Wie kann ich denn dieses "Draufklicken" im Windows-Symbol in der App realisieren, d.h. mit welchem Befehl kann ich denn die Verfügbarkeit eines Netzlaufwerks prüfen?

Vielen Dank und viele Grüße
Frank

Thema: Wie kann ich via DataBinding mit dem FileSystemWatcher prüfen, ob dieser ein- oder ausgeschaltet ist
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo zusammen,
habe jetzt versucht über Vererbung das Problem zu lösen, d.h. ich habe eine Klasse "MyFileSystemWatcher" erstellt, die von FileSystemWatcher abgeleitet ist und iNotifyPropertyChanged
beinhaltet.

Nun steh ich aber vor dem Problem, dass ich natürlich auf den Setter der Property, auf die ich die PropertyChange-Änderung anwenden möchte (in meinem Fall "EnableRaisingEvents") nicht zugreifen kann, um dort die OnPropertyChanged-Methode einzufügen.

Gibt es einen Weg das trotzdem zu realisieren?

Danke und Gruß
Frank

Thema: Wie kann ich via DataBinding mit dem FileSystemWatcher prüfen, ob dieser ein- oder ausgeschaltet ist
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Könnte ich dann vielleicht per Vererbung einen neues UserControl
(z.B. "MyFileSystemWatcher") erstellen
und die INotifyPropertyChanged dort für die gewünschte Property implementieren?

Gruß Frank

Thema: Wie kann ich via DataBinding mit dem FileSystemWatcher prüfen, ob dieser ein- oder ausgeschaltet ist
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo zusammen,
versuche schon seit längerer Zeit, die Property "EnableRaisingEvents" des
FileSystemWatchers an eine TextBox zu binden, so dass diese mir anzeigt,
ob der FileSystemwatcher ein- oder ausgeschaltet ist.

Mein ursprünglicher Versuch war:

(fsw_WatcherProjectFolder = FileSystemWatcher,
textBox1 = TextBox)



this.textBox1.DataBindings.Add(new Binding("Text", fsw_WatcherProjectFolder, "EnableRaisingEvents", true, DataSourceUpdateMode.OnPropertyChanged));


Die Bindung funktioniert leider nur 1x (beim Starten der App), bei der Änderung von "EnableRaisingEvents" wird aber die TextBox nicht mehr aktualisiert.

Danke und Gruß
Frank

Thema: Was ist der Unterschied zw. Methode überladen und Optionalem Parameter?
Am im Forum: Grundlagen von C#

Hallo zusammen,
ich glaube, ich habe noch nicht ganz verstanden, wann ich
bei unterschiedlichen Parameter einer Methode

- die Methode überlade


public void DoSomething(long x) {}
public void DoSomething(long x, long y) {}

- oder optionale Parameter


public void DoSomething(long x, long y = 0) {}

verwende.

Bei beiden Techniken muss ich die beiden Fälle abdecken, daß y verwendet wird oder nicht. Tatsächlich fällt es mir momentan schwer, mich für eine der beiden Techniken zu entscheiden.

Ein keiner Tipp wäre ganz hilfreich.

Vielen Dank und viele Grüße
Frank

Thema: Suche Download Codeplanet - Tutorial "TCP/IP Socket-Programmierung in C#"
Am im Forum: Netzwerktechnologien

Hallo zusammen,
ich suche den Download zu dem Tutorial "TCP/IP Socket-Programmierung in C#". Der Download-Link
http://www.codeplanet.eu/forum/filedata/fetch?id=1618

scheint nicht mehr zu funktionieren.
Weiß jemand vielleicht, ob die Datei irgendwo sonst zur Verfügung steht?

Danke und Gruß
Frank

Thema: TCP Client: Trennen der Connect- und Sende-Funktion
Am im Forum: Netzwerktechnologien

Hallo zusammen,
ich habe einen kleinen TCP-Server und einen -Client erstellt.

Der nachfolgende Quellcode zeigt den Client, dessen Form aus den folgenden
Steuerelementen besteht:

- cmb_IPAddress - Combobox für die IP-Adressen
- txt_Port - Textbox für den Port
- txt_SendText - Textbox für den zu sendenden Text
- btn_Connect - Button zum Verbinden und Senden


using System;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
using System.Net;
using System.Threading;


namespace TCPClientTest
{

    // ---------------------------------------------------------------------------------
    // Form
    // ---------------------------------------------------------------------------------

    public partial class MainWindow : Form
    {

        // --------------------------------------------------------------------------------
        // Declarations
        // --------------------------------------------------------------------------------

        // IP Address and Port
        private IPAddress ipAddress;
        private int port;

        // TCP Client
        private TcpClient tcpClient;
        private NetworkStream stream;


        // --------------------------------------------------------------------------------
        // Declarations
        // --------------------------------------------------------------------------------
        // Form
        // --------------------------------------------------------------------------------

        // Form: Constructor
        public MainWindow()
        {
            InitializeComponent();
        }

        // Form: Load
        private void MainWindow_Load(object sender, EventArgs e)
        {
            // Fill ComboBox of IP Address
            cmb_IPAddress.Items.Add("Loopback");
            IPHostEntry hostInfo = Dns.GetHostByName(Dns.GetHostName());            
            for(int i = 0; i < hostInfo.AddressList.Length; i++)
            {
                cmb_IPAddress.Items.Add(hostInfo.AddressList[i].ToString());
            }
            cmb_IPAddress.SelectedIndex = 0;

        }

        // Form: Closed
        private void MainWindow_FormClosed(object sender, FormClosedEventArgs e)
        {
            stream.Close();
            tcpClient.Close();
        }


        // --------------------------------------------------------------------------------
        // Controls
        // --------------------------------------------------------------------------------

        // Button: Connect
        private void btn_Connect_Click(object sender, EventArgs e)
        {
            // Detect IP Address and Port
            if (cmb_IPAddress.Text == "Loopback")
            {
                ipAddress = IPAddress.Loopback;
            }
            else
            {
                ipAddress = IPAddress.Parse(cmb_IPAddress.Text);
            }
            port = Convert.ToInt32(txt_Port.Text);


            // Send data
            tcpClient = new TcpClient();
            tcpClient.Connect(ipAddress, port);

            stream = tcpClient.GetStream();

            byte[] msgBytArr = Encoding.ASCII.GetBytes(txt_SendText.Text);
            stream.Write(msgBytArr, 0, msgBytArr.Length);
        }


    }
}

Soweit funktioniert auch alles, der TCP-Server empfängt die Daten und zeigt diese auch korrekt an.

Mein Problem ist, daß ich mit einem zusätzlichen Button die Funktionen zum Verbinden des TCP-Client und dem Senden der Daten trennen möchte, um nicht bei jedem Sendevorgang einen neuen TCP-Client erzeugen zu müßen.
Dazu habe ich einen zusätzlichen "Send"-Button eingefügt, und Code-Teile des Buttons "Connect" dorthin ausgelagert.
Der "Controls"-Bereich des neuen Quellcodes sieht somit folgendermaßen aus:



        // --------------------------------------------------------------------------------
        // Controls
        // --------------------------------------------------------------------------------

        // Button: Connect
        private void btn_Connect_Click(object sender, EventArgs e)
        {
            // Detect IP Address and Port
            if (cmb_IPAddress.Text == "Loopback")
            {
                ipAddress = IPAddress.Loopback;
            }
            else
            {
                ipAddress = IPAddress.Parse(cmb_IPAddress.Text);
            }
            port = Convert.ToInt32(txt_Port.Text);


            // Send data
            tcpClient = new TcpClient();
            tcpClient.Connect(ipAddress, port);

            stream = tcpClient.GetStream();
        }

        // Button: Send
        private void btn_Send_Click(object sender, EventArgs e)
        {
            byte[] msgBytArr = Encoding.ASCII.GetBytes(txt_SendText.Text);
            stream.Write(msgBytArr, 0, msgBytArr.Length);
        }

    }
}

Bei Ausführen bekomme ich allerdings den folgenden Effekt:

- Der TCP-Client läßt sich mit dem Server verbinden.

- Beim 1. Klick auf den "Send"-Button wird der Text korrekt vom Server empfangen.

- Beim 2. Klick auf den "Send"-Button zeigt der TCP-Server keine Rekation mehr.

- Beim 3. Klick auf den "Send"-Button wird der folgende Fehler ausgelöst:
"In die Übertragungsverbindung können keine Daten geschrieben werden: Eine bestehende Verbindung wurde softwaregesteuert
durch den Hostcomputer abgebrochen."

Kann mir jemand eine Tipp geben, wo der Fehler zu suchen ist?

Vielen Dank und viel Grüße
Frank

Thema: Wie kann ich eine Klasse als Methoden-Parameter in Methode übergeben?
Am im Forum: Grundlagen von C#

Hallo zusammen,
ich möchte einer Methode einen Klassennamen als Parameter übergeben.
Also praktisch folgendermaßen:


public class Auto()
{
     ...
}

public class Person()
{
     ...
}


public class TuWasMitDerKlasse(Klasse) 
{
     ...
}

Die Klasse "TuWasMitDerKlasse" bekommt in diesem Fall also entweder "Auto" oder "Person" als Parameter übergeben.

Habs schon versucht mit


public class TuWasMitDerKlasse(typeof(Klasse)) 
{
     ...
}

oder mit


public class TuWasMitDerKlasse(class Klasse) 
{
     ...
}

Geht beides nicht. Kann mir jemand vielleicht eine Tipp geben?

Danke und Gruß
Frank

Thema: Einen GET-Request mit Bearer-Token aus C#-Anwendung (HttpWebRequest) feuern?
Am im Forum: Web-Technologien

Hallo, nochmal danke für die Hilfe, läuft jetzt

Eine Frage hab ich aber noch:
Ich würde gerne in einer Textbox anzeigen lassen, was der http-Treiber letztendlich gesendet hat, so wie ich das auch bei Postman mir anzeigen lassen kann, z.B:

GET /api/v4/contacts?me=true HTTP/1.1
Host: www.wrike.com
Authorization: Bearer XXXYYYZZZ
User-Agent: PostmanRuntime/7.16.3
Accept: */*
--- etc. ---
--- etc. ---

Hab gesehen, daß es die Methode "GetRequestStream" gibt, aber die scheint wohl nicht die richtige zu sein. Gibt es da eine (einfache) Möglichkeit?

Danke und Gruß
Frank

Thema: Einen GET-Request mit Bearer-Token aus C#-Anwendung (HttpWebRequest) feuern?
Am im Forum: Web-Technologien

Hallo T-Virus,
nochmal vielen Dank für deine Bemühungen!

Das Programm funktioniert jetzt, wobei ich noch die folgende Zeile bzgl. des Security Protocols einfügen musste:


ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

Kannst du mir jemand vielleicht ein Tipp bzgl. Literatur über C# in Verbindung mit http geben?

Vielen Dank!

Thema: Einen GET-Request mit Bearer-Token aus C#-Anwendung (HttpWebRequest) feuern?
Am im Forum: Web-Technologien

Habe jetzt den Accept-Header entsprechend gesetzt, leider
bekomme ich immer noch die Fehlermeldung.

Zitat von CrocodileDundee


        // Request data from URI
        public string makeRequest()
        {
            // Declarations
            string strResponseValue = string.Empty;
            string endpoint = $"https:/www.wrike.com/api/v4/contacts?me=true";

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(endPoint);

            request.Method = "GET";

            request.Accept = $"*/*";       */ // Accept eingefügt

            request.Headers.Add("Authorization", "Bearer XXXYYYZZZ"); 

            HttpWebResponse response = null;

            try
            {
                response = (HttpWebResponse)request.GetResponse();

 		// ---------------------------------------------------
		// An dieser Stelle wird die Ausnahme geworfen
 		// ---------------------------------------------------
                using (Stream responseStream = response.GetResponseStream())
                {
                    if (responseStream != null)
                    {
                        using (StreamReader reader = new StreamReader(responseStream))
                        {
                            strResponseValue = reader.ReadToEnd();
                        }
                    }
                }
            }
            catch(Exception ex)
            {
                strResponseValue = "{\"errorMessages\":[\"" + ex.Message.ToString() + "\"],\"errors\":{}}"; 
            }
            finally
            {
                if(response != null)
                {
                    ((IDisposable)response).Dispose();
                }
            }
            return strResponseValue;
        }

Thema: Einen GET-Request mit Bearer-Token aus C#-Anwendung (HttpWebRequest) feuern?
Am im Forum: Web-Technologien

Hallo zusammen,
ich versuche gerade auf die Wrike-API mit einem kleinen C#-Terminal zuzugreifen. Dafür habe ich eine App registriert und einen Permanent-Token generiert.

Mit Hilfe von des Tools Postman gelingt mir nun auch der entsprechende Datenzugriff, dessen Befehl folgendermaßen aussieht:


GET /api/v4/contacts?me=true HTTP/1.1
Host: www.wrike.com
Authorization: Bearer XXXYYYZZZ
User-Agent: PostmanRuntime/7.16.3
Accept: */*
Cache-Control: no-cache
Postman-Token: ABCDEFGHIJKLM
Host: www.wrike.com
Accept-Encoding: gzip, deflate
Cookie: is_eu_visitor=1; wrikeLocale=en; wordpress_google_apps_login=bfac67bca374d2758bfe58e9d1429192; lgd=0; BCSI-CS-cc3d248abb9328f5=1
Connection: keep-alive
cache-control: no-cache


Dabei ist XXXYYYZZ der Permanent-Token, der real ca. 150 Zeichen lang ist.

Nun versuche ich diesen Befehl mittels http-Request in meinem C#-Terminal aus abzusetzen, wobei die die folgende gezeige Methode "makeRequest" meiner entsprechenden Kasse aufrufe.
Die Stelle an der dann die Ausnahme geworfen wird, habe ich unten im Code gekennzeichnet.

Die entsprechende Fehlermessage ist dann:

Fehler
"Die zugrunde liegende Verbindung wurde geschlossen: Unerwarteter Fehler beim Senden."


        // Request data from URI
        public string makeRequest()
        {
            // Declarations
            string strResponseValue = string.Empty;
            string endpoint = $"https:/www.wrike.com/api/v4/contacts?me=true";

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(endPoint);

            request.Method = "GET";

            request.Headers.Add("Authorization", "Bearer XXXYYYZZZ"); 

            HttpWebResponse response = null;

            try
            {
                response = (HttpWebResponse)request.GetResponse();

 		// ---------------------------------------------------
		// An dieser Stelle wird die Ausnahme geworfen
 		// ---------------------------------------------------
                using (Stream responseStream = response.GetResponseStream())
                {
                    if (responseStream != null)
                    {
                        using (StreamReader reader = new StreamReader(responseStream))
                        {
                            strResponseValue = reader.ReadToEnd();
                        }
                    }
                }
            }
            catch(Exception ex)
            {
                strResponseValue = "{\"errorMessages\":[\"" + ex.Message.ToString() + "\"],\"errors\":{}}"; 
            }
            finally
            {
                if(response != null)
                {
                    ((IDisposable)response).Dispose();
                }
            }
            return strResponseValue;
        }

Kann mir jemand vielleicht sagen, warum diese Anfrage nicht funtioniert?

Danke und Gruß
Frank

Thema: Suche Informationen und Tutorials über die Write API
Am im Forum: Office-Technologien

Hallo zusammen,
har vielleicht jemand schon mal was mit der Wrike API gemacht?
Ich find irgendwie keinen Einstoeg, hab mir schon ein Projekt von GitHub
heruntergeladen, diese hilft mir aber auch nicht richtig weiter.

Vielen Dank und viele Gruesse
Frank

Thema: Welche Anbieter zur Lizenzverwaltung gibt es?
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo zusammen,
nehmen wir an, ich möchte eine Software verkaufen und diese mit einem Lizenzkey gegen eine Zweitinstallation schützen.
Dazu könnte ich jetzt anfangen, mir per Cloud oder anderen Serverdiensten eine eigenes Lizenzmanagement aufzubauen.

Allerdings könnte ich mir vorstellen, daß dazu bereits fertige Lösungen angeboten werden, vleleicht sogar als dll, die in ein C#-Projekt eingebunden werden kann und über die dann die Lizenzverwaltung mit Hilfe einer Backendlösung verwaltet werden kann.

Kann mir vielleicht jemand solch einen Anbieter nennen, falls dieser existiert?`

Vielen Dank und Gruß
Frank

Thema: .NET-Anwendung mit dll unter Raspian mit Mono
Am im Forum: Cross Platform Entwicklung - Mobile und IoT

Hallo zusammen,
habe unter Raspbian das Mono-Projekt installiert und kann nun eine einfache C#-Hello-World-Anwendung laufen lassen. Soweit alles gut.

Habe dann eine Anwendung getestet, die auf eine selbst geschriebene dll verweist. Hat aber leider nicht funktioniert, selbst wenn ich die dll in das gleiche Verzeichnis kopiert hab wie die exe (in meinem Fall der Raspbian Desktop).

Muß ich die dlls vielleicht in ein anderes Verzeichnis packen oder im Visual Studio schon was anders einstellen ?

Vielen Dank!

Thema: Lebensdauer von Objekten; Werden Subklassen nicht mit zerstört?
Am im Forum: Grundlagen von C#

Zitat von Taipi88
Hi,
Deklariert man nun z.B. die DataTable als static, also:


static DataTable dt = new DataTable();
Dann wird einem exakt die von dir genannte Exception um die Ohren gehauen.
LG

Du hattest Recht, die DataTable war als static deklariert.

Also sind dann anscheinend statische Properties einer Klasse auch dann noch im Speicher,
selbst wenn kein Objekt der Klasse mehr existiert.

Kann es ein, daß diese Properties dann über die gesamte Lebensdauer des Programms im Speicher gehalten werden?

Thema: Lebensdauer von Objekten; Werden Subklassen nicht mit zerstört?
Am im Forum: Grundlagen von C#

OK, ich denke ich hab das Problem anscheinend nicht ausführlich genug geschildert.

Im Grund genommen geht es darum, daß ich eine private Property ändern möchte, die nur über den Konstruktor erreichbar ist.
Konkret geht es darum, daß ich ein Objekt ("Klasse1") instanziere, wobei ich den Namen einer COM-Schnittstelle im Konstruktor angeben muss.


Class1 Klasse1 = new Class1(COM1);


War es die falsche Schnittstelle (d.h. keine Kommunikation), war der Plan, das Objekt auf "null" zu setzen, und mit dem Namen einer anderen Schnittstelle neu zu instanzieren.


Klasse1 = null;
Klasse1 = new Class1(COM2);

Beim neuen Instanzieren von Class1 tritt nun die Exception auf.
Der Fehler tritt da auf, wo der Konstruktor der Subklasse durchlaufen wird.


public class Class1(string COMPortName)
{
    public Subclass SubKlasse = new Subclass();
    ...
}


public class Subclass
{
    DataTable dt = new DataTable();

    public Subclass() 
    }
        dt.Columns.Add("Sp1");      // Hier wird die Exception geworfen
        dt.Columns.Add("Sp2");
        dt.Columns.Add("Sp3");
    }
}



Der Compiler meldet zur Laufzeit:
"Additional information: Eine Spalte names 'Sp1' gehört bereits zu dieser DataTable."

Ich kann mir das nur so erklären, daß das Objekt noch im Speicher hängt und noch nicht vom Garbage Collector bereinigt wurde.
Einen "GC-Collect()" hab ich auch schon eingefügt, bringt aber auch nix.

Danke!

Thema: Lebensdauer von Objekten; Werden Subklassen nicht mit zerstört?
Am im Forum: Grundlagen von C#

Hallo zusammen,
habe eine Klasse, in der ich wiederum eine Klasse instanziere:


public class Class1
{
    public Subclass SubKlasse = new Subclass();
    ....
}

In meiner Main-Routine instanziere ich dann Class1:


Klasse1 = new Class1();

so daß ich dann auch auf die SubKlasse zugreifen kann.


Klasse1.SubKlasse.Prop = 0;

Soweit alles gut.

Wenn ich nun aber die Klasse1 zerstöre und später wieder
instanziere


Klasse1 = null;
...
Klasse1 = new Class1();

bekomme ich eine Exception, weil anscheinend die Instanz der Subklasse noch immer im Speicher ist.
Kann das sein? Wird die Subklasse nicht mit zerstört?

Vielen Dank!

Thema: Warum kann ich bei einer Überladungen der UDP-Send-Methode den IPEndPoint mit angeben?
Am im Forum: Netzwerktechnologien

Hallo zusammen,
warum kann ich eigentlich bei der einer der Überladungen der UDP-Send-Methode den IPEndPoint mit angeben?

Diesen habe ich doch schon bei der Connect-Methode festgelegt.

Danke und Gruß
Frank

Thema: "Sauberes" Design einer WPF-Anwendung
Am im Forum: GUI: WPF und XAML

Hallo zusammen,
möchte jetzt endlich ernsthaft den Umstieg von Forms auf WPF wagen
und dabei mir gleich einen sauberen Aufbau der Anwendung angewöhnen.

Grundsätzlich besteht eine neue WPF-Anwendung aus den Dateien

- App.xaml
- App.xaml.cs
- MainWindow.xaml
- MainWindow.xaml.cs

OK, grundsätzlich "falsch" wäre es ja nicht, in jede dieser Dateien Code zu schreiben, aber gibt es Dateien, die "man" eher nicht zum coden verwendet
um z.B. eine saubere Trennung zwischen Code und GUI zu erreichen?

Besser gesagt, ich suche nach "Best Practices", wie man ein sauberes Design einer WPF erstellt.

Vielen Dank und viele Grüße
Frank

Thema: Welche Software zur Konvertierung von Word-Dokumente zu PDF könnt ihr empfehlen?
Am im Forum: Office-Technologien

Hallo zusammen,
suche nach einer Möglichkeit, mit einem C# Tool Word-Dokumente in pdf-Dokumente zu konvertieren.
Dazu werden im Netz die verschiedensten Tools und Lösungswege angeboten.

Wie löst ihr das? Gibt es eine Möglichkeit, die ihr empfehlen könnt?

Vielen Dank und viele Grüße
Frank

Thema: Was macht bei einer Instanzierung einer Klasse das Wort "static" für einen Sinn?
Am im Forum: Grundlagen von C#

Wenn sich die Eigenschaften in allen Instanzen gleichermaßen, dann sind also
in allen Instanzen die Eigenschaften immer gleich?
Aber was ist dann der Unterschied zu einer statischen Klasse?

Thema: Was macht bei einer Instanzierung einer Klasse das Wort "static" für einen Sinn?
Am im Forum: Grundlagen von C#

Hallo zusammen,
sorry, vielleicht nochmal etwas ausführlicher:


namespace Tierheim
{

    // Klasse Hund
    public class Hund
    {
        public string Rasse;
    }


    // Klasse Hundekatalog
    public class Hundekatalog
    {
        private static Hund Waldi = new Hund();
    }

}

Was verursacht hier die Instanzierung mit "static" ?

Gruß
Frank

Thema: Was macht bei einer Instanzierung einer Klasse das Wort "static" für einen Sinn?
Am im Forum: Grundlagen von C#

Hallo zusammen,
ich bin in einem Quellcode auf die folgende Instanzierung gestoßen
(die Bezeichner habe ich geändert):


private static Auto Kadett = new Auto();

Dabei ist Auto keine statische Klasse.

Was macht bei dieser Instanzierung das Wort "static" für einen Sinn?

Dank und Gruß
Frank

Thema: enums, die nur aus Zahlen bestehen
Am im Forum: Grundlagen von C#

Hallo zusammen,
ich möchte eine ComboBox mit einer Auswahl für die Baudrate einer Schnittstelle befüllen.
Diese Auswahl besteht also nur aus Zahlenwerten (9600, 19200, 38400).

Ich würde gerne ein enum erstellen, aber der Compiler erwartet Bezeichner, d.h. also so etwas wie


private enum Baudrate 
{
      9600,
      19200,
      38400
}

geht nicht.
Wie kann ich sowas am besten lösen, wenn ich als Auswahl nur Zahlenwerte habe?

Danke und Gruß
Frank

Thema: Dialog-Fenster soll erst schliessen, wenn Eingabewerte OK sind
Am im Forum: GUI: Windows-Forms

Gelöst!
Allerdings: Das ganze Problem war, daß ich die ganze Zeit anstatt

DialogResult = DialogResult.OK
(was ja dann eigentlich this.DialogResult = DialogResult.OK entspricht)

die Zeile

   btn_OK.DialogResult = DialogResult.OK

programmiert hatte.
Hab immer gedacht, der Button gibt den "OK" zurück.
Anscheindend muß aber die Form "OK" zurückgeben.