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 Papst
Thema: Wie kann ich alle Mikrocontroller im Netzwerk suchen?
Am im Forum: Netzwerktechnologien

Wenn deine µC sich per DHCP eine IP holen... kannst du die Informationen evtl. von deinem DHCP Server auslesen?
Eine z.B. Fritzbox hat dazu eine passende API: https://avm.de/service/schnittstellen/
Gibt auch hier im Forum jemanden, der eine passende Bibliothek geschrieben hat, ob die die notwendige Heimnetzgeräte API implementiert kann ich dir aber nicht sagen.

Thema: Wie kann ich mit WPF über WebService auf eine Datenbank zugreifen?
Am im Forum: Datentechnologien

Sofern dein NAS System es unterstützt könntest du eine API auch in C# entwerfen und so verbinden.

Thema: Wie entwickelt man eine MMVM Anwendung, wenn Tasks abhängig von Tasks sind?
Am im Forum: Grundlagen von C#

Intern erstellt der Compiler aus jedem await eine Statemachine.
Da gibt es sicher einige Blog Posts oder Artikel darüber, wie das genau funktioniert.

Für dich erscheint es aber so, dass das warten auf eine async Methode (await) dazu führt, dass diese im Hintergrund ausgeführt wird und der Verarbeitungsschritt dann an den Rückgabepunkt zurückspringt.
Insofern ist es wunderbar möglich await's untereinander zu schreiben.

In diesem Beispiel, bei AddCustomerToDb: Wenn der Task "AddCustomerToDb" abgearbeitet ist, springt die Ausführung wieder zu dieser Zeile und die variable customer steht zur verfügung. Danach wird "AddCustomerAddress" abgearbeitet.
Also für den Programmierer kein Unterschied zu sequentieller Programmierung.


public async Task AddCustomer()
{
  var customer = await AddCustomerToDb(); //Task<Customer> 
  await AddCustomerAddress(customer, address); // Task
  await AddCustomerToProject(customer, 1); // Task
}

Auch funktionieren würde z.B. ein .ContinueWith().

Das Task.Run wirst du dir vermutlich dort sparen können, wenn die aufgerufene Methode sowieso schon einen Task zurückgibt.

Thema: Wie entwickelt man eine MMVM Anwendung, wenn Tasks abhängig von Tasks sind?
Am im Forum: Grundlagen von C#

eine async Methoden ohne Rückgabewerte (void) können zu Race conditions führen. Nutze besser async Methoden, die einen Task zurückgeben.

Du kannst auch in einer inline Funktion await nutzen, in dem du diese als async markierst.


var func = async () => {
  await ...;
  await ...;
}

await func;

Je nachdem, was du genau machen möchtest gibt es unterschiedliche Herangehensweisen an das Problem. Angefangen von kompletten Frameworks, die dir die Arbeit abnehmen über Mediation (CQRS via MediatR) bis hin zu simplem ausprogrammieren der Abhängigkeiten.
Was passt hängt davon ab, wie deine Anforderungen aussehen.

Dein Beispielcode sieht aber nach Schichtenverletzung aus. Datenbankzugriff sollte nicht in der Datenbank erfolgen.

P.S.: ist mir erst am Ende aufgefallen... willst du nur mehrere await's in einer Methode ausführen? Das funktioniert doch Problemlos..

Pseudo Code:


public async Task AddCustomer() 
{
  var customer = await AddCustomerToDb();
  await AddCustomerAddress(customer, address);
  await AddCustomerToProject(customer, 1);
}

Thema: RESTful Webservices entwickeln außerhalb von Microsoft Visual Studio
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Nur, damit es hier steht: Für VSCode muss kein Nutzerkonto angelegt werden.

Es gibt Features, die mit einem Nutzerkonto besser funktionieren (z.B. LiveShare, Azure Integration oder GitHub Integration), aber dafür kann es z.B. auch ein u.U. GitHub Konto sein. Für das reguläre erstellen, ausführen und debuggen von Programmen auf Basis von .NET 5 wird aber kein Konto benötigt.

Zu VSCode allerdings noch ein Satz:
Man fängt beim Programmieren gerne mit Konsolenanwendungen an, auf die man Abfragen legt. Das funktioniert mit einem Standardprojekt von VSCode nicht und man muss es erst so konfigurieren, dass eine eigenständige Konsole geöffnet wird.

Thema: RESTful Webservices entwickeln außerhalb von Microsoft Visual Studio
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hi Jaftali,

ihr könnt problemlos Visual Studio Code einsetzen und damit Webservices auf Basis von ASP.NET Core (bzw. auf .NET 5.0 Basis) erstellen.
Allerdings kann Visual Studio Code nicht mit den Desktop Frameworks WPF und Windows Forms umgehen.

*Edit: Visual Studio Code ist frei verfügbar!

Thema: DLL-Dateien laden
Am im Forum: Grundlagen von C#

Wenn die dll's Modbus RTU mit einer Steuerung spricht könntest du auch eine in C# geschriebene komplett managed Implementierung vn Modbus nutzen um die Modbus Transaktionen durchzuführen.

Thema: DLL-Dateien laden
Am im Forum: Grundlagen von C#

Hi,

vermutlich ist es einfacher als du denkst.
Hast du die DLL nur auf der Festplatte vorliegen oder ist diese über einen Paketmanager (NuGet im .NET Umfeld) verfügbar?

Falls nur auf Festplatte:
Füge deinem Projekt einfach einen Verweis auf die .dll hinzu. Am sinnvollsten legst du sie in dein Projektverzeichnis mit hinein/in einen Unterordner.
Es gibt da zur Projektstrukturierung einige passende Informationen in der offiziellen .NET Dokumentation.

Wenn sie über NuGet verfügbar ist, binde sie darüber ein.

Thema: Welche(s) Framework(s) für Desktop & Mobile Entwicklung?
Am im Forum: Cross Platform Entwicklung - Mobile und IoT

Platformunabhängig würde mit Blazor als PWA gehen.

Thema: Automatisch generierte Pfad
Am im Forum: Grundlagen von C#

Als Tipp: Nutze die Methode Combine der Klasse Path um Pfadteile zu verbinden.

Zum einen ist sie extra dafür gemacht, zum hilft sie dir bei Änderungen. Falls du z.B. einmal auf Linux lauffähig sein musst.

Thema: Wie gehe ich mit der doppelten Stunde der Winterzeit um wenn ich in UTC umrechne?
Am im Forum: Grundlagen von C#

Nutze DateTimeOffset anstatt DateTime.

DateTimeOffset hat neben der DateTime Information eben noch die Zeitzonenverschiebung integriert.

Alternativ kannst du dir auch die Bibliothek NodaTime anschauen, die etwas anders mit Zeit umgeht, als die .NET Bordmittel.

Thema: Wie kann ich über PHP in JS einen Wert setzen, den ich dann in einer C# Methode verwenden kann?
Am im Forum: Web-Technologien

SignalR ist mit Forms kompatibel.

Es bleibt dennoch die Frage, warum du zwei Clients benötigst. Was kannst du mit der Website nicht umsetzen, was in Windows Forms geht?

Thema: Wie kann ich beim Abrufen von Exchange-Properties einen Status oder Ladebalken anzeigen?
Am im Forum: Office-Technologien

Wie lautet denn dein Compiler Fehler?

Deine Methode "PrepareMailsAsync" heißt zwar Async und ist als Async markiert, ist aber nicht async und gibt vor allem keinen Task zurück. Sollte also in jedem Fall einen Compiler Fehler geben, weil der Rückgabetyp nicht stimmt.

Thema: Dienst vor Beendigung schützen (Windows Worker Service unter dotnet core 3.1)
Am im Forum: Rund um die Programmierung

Ich kann dir Argumentation verstehen, aber auch zwei sich überwachende Services verschieben das Problem ja nur, wenn du der Authorisierung nicht traust.
Denn auch zwei Services kann ich nahezu gleichzeitig mit Adminrechten beenden.

Es bleibt dir also nur entweder auf die Authorisierung zu vertrauen oder ein Workaround zu bauen, um den du vermutlich wieder einen Workaround bauen musst.

Thema: Dienst vor Beendigung schützen (Windows Worker Service unter dotnet core 3.1)
Am im Forum: Rund um die Programmierung

Ein beenden über den Task Manager wirst du kaum abfangen können.

Ob es durch Windows Verwaltung, oder ob es einen Windows Hook gibt, der beim beenden eines Prozesses ausgelöst wird.

Was glaube ich ganz gängig ist wäre ein zweites Programm, welches parallel läuft. Deine beiden Programme müssten sich dann gegenseitig überwachen.

Vermutlich ist es aber sinnvoller bei passender Authorisierung anzusetzen. Ohne Adminrechte kann ein User einen als Admin gestarteten Prozess nicht beenden.

Thema: Wo platziere ich den Webservice zur Verbindung zwischen MySQL Datenbank und Xamarin Forms App?
Am im Forum: Datentechnologien

Richtig, der Webservice sollte nicht auf dem Client PC / Handy liegen.
Er muss aber nicht auf dem gleichen Server liegen wie die Datenbank.

In deinem Fall sollte er auf dem RPI liegen, er kann (aber muss nicht) in PHP geschrieben sein. Du könntest dort auch einen ASP.NET Core Web API hinlegen - geschrieben in C#.

Thema: Politik trifft Git - Umbenennen des Master Branches
Am im Forum: Szenenews

Natürlich ist es schwierig zu sagen wo die Grenze zu ziehen ist.
Ob das in gleichem Maße für Kunst gilt kann und will ich nicht beurteilen - auch gerade, weil es mich nicht betrifft, da überlasse ich das Urteil besser anderen.

Was ich aber als Gute Analogie befunden habe ist das (m/w/d) an Stellenausschreibungen. Mir persönlich ist es nicht wichtig, geradezu egal ob da dieses d dransteht. Aber es fühlten sich dadurch Menschen diskriminiert. Deswegen ist es dort hineingekommen.
Die gleiche Diskussion ist wegen des Master Branches oder ähnlichen Begriffen in der Technologiewelt.

Thema: Seltsamer Darstellung vom Expander-Header beim DataGrid Grouping
Am im Forum: GUI: WPF und XAML

Ins blaue geschossen: Dir wird die Ausgabe der "ToString()" Method angezeigt.
Dein Binding benötigt noch einen Path, um eine bestimmte Property anzuzeigen.

Thema: Wie arbeite ich mit ASP.NET MVC 4.7.2, Office 365 AD und Rollen?
Am im Forum: Web-Technologien

Ich verwende die Assembly Microsoft.AspNetCore.Authentication.OpenIdConnection in Version 3.1.0


            services
                .AddAuthentication()
                .AddOpenIdConnect(configure =>
                {
                    configure.RequireHttpsMetadata = true;
                    configure.CallbackPath = "/signin-oidc";
                    configure.Authority = "https://login.microsoft.com/"+ Configuration.GetValue<string>("OIDC:AAD:Authority");
                    configure.ClientId = Configuration.GetValue<string>("OIDC:AAD:ClientId");
                    configure.ClientSecret = Configuration.GetValue<string>("OIDC:AAD:Secret");
                    configure.ResponseType = "code";
                })

Thema: Wie arbeite ich mit ASP.NET MVC 4.7.2, Office 365 AD und Rollen?
Am im Forum: Web-Technologien

Prinzipiell geht das mit Code Flow und AAD - ich nutze das, allerdings mit ASP.NET Core.

Sorry, der Beitrag hilft nicht viel, aber mit der "alten" Web Welt kenne ich mich kaum aus

Thema: Warum stürzt Applikation mit NullReference Exception ab?
Am im Forum: Web-Technologien

Zitat von Abt

Nein. Nein. Nein. Nein.
Niemals!

So Pauschal würde ich das nicht ablehnen... Azure Key Vault z.B. ist auch eine HTTP Schnittstelle um an Credentials zu kommen, die dort gespeichert sind.

Thema: Wie kann ich von C# auf MySQL Zugreifen ohne die Zugangsdaten hart im Code zu speichern?
Am im Forum: Grundlagen von C#

Entschuldigt, dass ich soviel Quote, ich wollte das aber nicht unkommentiert stehen lassen.

Zitat von M.L.
Die Logindaten lassen sich auch in eine externe .cs Datei eintragen (analog wie .inc bei PHP)
Das ist nicht analog wie bei PHP.
Der Unterschied: c# wird kompiliert und alle *.cs Dateien innerhalb eines Projektes als IL Code in einer .dll (oder .exe oder bin) zusammengefasst.
In der analogie zu PHP wäre hier eine Konfigurationsdatei, die vom Code gelesen wird (analog zu require_once in PHP). Prinzipiell sind die Vergleiche aber etwas mühsam, weil PHP und C# sehr unterschiedlich funktionieren!

Zitat von hypersurf
(dafür bietet .NET auch schon entsprechende Klassen).
Ich würde in jedem Fall das Konfigurationsmodell von .NET Core empfehlen: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-3.1
Das ermöglicht sowohl verschlüsselte Quellen für Zugangsdaten, Authentifizierte und Lokale. Damit hat man die beste Flexibilität.
Das funktioniert auch für Desktop (WPF/WinForms) Apps. Allerdings führt das quasi jeden Login Mechanismus ad absurdum, wenn nicht der Login der gleiche wie für die Datenbank ist.
Auch muss immer Hinterfragt werden, ob ein Desktop Programm direkt auf eine Datenbank zugreifen sollte!

@Lucius:
Am besten wäre es, du arbeitest dich in die Grundlagen von der nicht mehr ganz so neuen C# Welt in Form von .NET Core (bzw. jetzt kommend .NET 5) ein.
Da werden viele dieser Frage mit gut funktionierenden Konzepten beantwortet.

Thema: Wie schreibe ich einen Restful Webservices unter SharpDevelop?
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Vergleich mal die Projekte, da werden noch mehr Unterschiede sein.

Das liegt ja nicht an der IDE (zumindest nicht die Fehler), sondern nur daran, dass das Template im SharpDevelop einfach nicht die richtigen Referenzen enthält.

Warum nutzt du nicht Visual Studio Code mit ASP.NET Core?

Thema: Wie kann ich bei bei OData (Connected Services) in VS bessere Exceptions anzeigen?
Am im Forum: Netzwerktechnologien

Okay, mit MS Dynamics habe ich noch nicht gearbeitet.
Ich kann mir aber fast nicht vorstellen, dass du bei dem OData Context nicht einen HttpClientHandler oder was ähnliches mitgeben kannst.

Thema: Wie Daten an COM-Schnittstelle schicken und je nach Antwort eine Aktion ausführen?
Am im Forum: Grundlagen von C#

Du wirst einige Probleme bekommen, wenn du das direkt so machst:



Es funktioniert nicht, weil du vom Serial Port einen String liest und diesen mit einem integer vergleichst.

Erstelle dir einen Service (= eine eigene Klasse), der die Kommunikations übernimmt und dann z.B. über Events die GUI aktualisiert.

Ich kann dir noch diesen Artikel ans Herz legen:
[FAQ] Wie finde ich den Einstieg in C#?

Thema: Wie Daten an COM-Schnittstelle schicken und je nach Antwort eine Aktion ausführen?
Am im Forum: Grundlagen von C#

Hi,

was für einen Projekttyp hast du denn?
Eine Konsolenanwendung oder etwas mit GUI?

Die Konsolenanwendung ist in erster Linie ja Prozedural, hier müsstest du das einfach in der Anwendung machen.

Was hast du denn bisher erfolglos gemacht?
Bekommst du eine Serielle Verbindung bereits aufgebaut?

Thema: Wie kann ich bei bei OData (Connected Services) in VS bessere Exceptions anzeigen?
Am im Forum: Netzwerktechnologien

Hi,

wenn du sagst du erzeugst deine Proxies selber auf Basis der Metadaten, wirst du ja in den Proxies eien HttpClient verwenden.
Dieser behandelt deinen Http Request auf deine OData API. Hier solltest du auch an die Fehlerbeschreibung kommen.

Thema: Wie arbeite ich mit ASP.NET MVC 4.7.2, Office 365 AD und Rollen?
Am im Forum: Web-Technologien

Ohne das jemals mit ASP.NET gemacht zu haben, einfach mal frei heraus mit meinem Halbwissen :).

In deinen Settings ist der ResponseType nicht gesetzt. Würdest du den auf "code" bzw auf OpenIdConnectResponseType.Code setzt, sollte das AAD mit der passenden Antwort um die Ecke kommen.

Thema: Azure CosmosDB - Anwendungsbereiche | Kosten
Am im Forum: Smalltalk

Hi,

das ist leider echt schlecht vergleichbar. Bei der Cosmos DB bezahlst du ja nicht für expliziten RAM oder eine CPU, sondern für Request Units.
Auch ist ein Vergleich mit nur einem enthaltenen Dokument denkbar schlecht, du bezahlst die Cosmos DB glaube ich in vollen GB.

Ob es im Produktiven Anwendungsfall lohnt muss glaube ich dabei sehr genau angeschaut werden können. Ich muss dann ehrlich gestehen, dass ich nicht weiß inwie weit MongoDB Atlas Feature-gleich mit der Managed Cosmos DB ist.

Im Endeffekt sitzen ja dort bei MS Produktmanager, die sehr genau im Markt vergleichen werden, was für solche Datenbanken für Preise ausgerufen werden können.

Thema: Wie per SSH.net Zugriff auf Cisco Small Business SG350?
Am im Forum: Netzwerktechnologien

SSH bietet sich idr. nicht zum monitoren von Switchen an. Genau dafür gibt es das Protokoll SNMP.
Wir verwenden hier die Lextm.SharpSnmpLib sehr erfolgreich in der freien Version. Zusammen mit den Python tools "pysmi" unter Linux lassen sich da sehr elegant auch die MIB Files auslesen und die entsprechenden Datenpunkte (Object ID's) bestimmen.


Edit: pysmi eingefügt, sonst machte der Satz keinen Sinn