Bei Powertoys ist ein "Always On Top" dabei, kann aber nicht sagen es da gelöst ist.
https://learn.microsoft.com/de-de/windows/powertoys/always-on-top
https://github.com/microsoft/PowerToys/tree/main/src/modules/alwaysontop
Ich habe da immer .GetAwaiter().GetResult()
verwendet.
https://stackoverflow.com/questions/17284517/is-task-result-the-same-as-getawaiter-getresult
Neben dem Connect Timeout
für den Verbindungsaufbau gibt es noch den Command Timeout
für die Queries.
Es muss die Handled-Eigenschaft auf true gesetzt werden.
Siehe auch Beispiel.
.NET Framework 2.0 und 3.x (Runtime 2.0) sind schon länger wie Du festgestellt hast nicht im Standard installiert.
Aber die Runtime 4.0 (Framework 4.x, aktuell 4.8) ist, meine ich in Standard installiert.
Wenn man als Zielframework 4.7 wählt, sollte das immer passen.
Oder setzt auf .NET 6 oder 7 und liefert die Runtime mit.
Es wurde Version 4.20.2 veröffentlicht, wenn ich das richtig sehe wurde es damit wieder entfernt
Server und App sollen eins sein! Der Server soll im Bauch der App laufen.
Warum dann überhaupt den (Http)Service in der App?
Der ist den dem Fall überhaupt doch nicht notwendig.
Im allgemeinen läuft ein Service im Internet/Intranet und der Client konsumiert diesen dann.
Du suchst UnicodeEncoding bzw. UTF-16.
Ich wollte 2-FA einrichten, erhalte aber nach Eingabe des Bestätigungscode nur eine Fehlermeldung.
Der Response POST https://mycsharp.de/konto/multi-faktor-login/aktivieren gibt einen 500er zurück.
date: Sun, 25 Jun 2023 16:54:23 GMT
Die Dateien mit FileShare.None öffnen.
Welche .NET Version kommt denn zum Einsatz?
Wenn ich die Ausgabe von @Abt richtig sehe, kommt dort 8.0 zum Einsatz.
Mal vom DECLARE und SET der sendungsnummer abgesehen, das Leerzeichen vor ID bei COUNT(` ID `).
Mit .NET 7 ist für System.Text.Json Type Hierarchies hinzugekommen.
Das könnte ggf. passen, für Json.NET gibt es meine ich so etwas ähnliches.
Du kannst doch ffmpeg mit in Deinem Container-Image auf nehmen.
Und zwischen den Aufrufen könnte sich ja auch der Wert geändert.
Bei der Prüfung nicht null, aber dann bei der Zuweisung.
Hier bietet sich ggf. die Verwendung des ! (null-forgiving) operator (C# reference) an,
wenn sichergestellt ist das der Wert nicht null ist.
Das Thema hatten wir doch vor kurzen
Verständnisprobleme mit BindingList
Dann kannst Du doch TimeSpan nehmen.
Oder einfach ein int/long (ganze Minuten), wenn eine Genauigkeit von Minuten reichen,
Es wird ein public Standard ctor benötigt, oder der ctor muss gekennzeichnet werden.
Du hast den Hinweis zum BinaryFormatter gelesen?
BinaryFormatter ist unsicher und kann nicht sicher gemacht werden. Weitere Informationen finden Sie im BinaryFormatter-Sicherheitshandbuch.
Deserialisierungsrisiken in der Verwendung von BinaryFormatter- und verwandten Typen
Mit default erfolgt eine Initialisierung mit dem Standardwert des jeweiligen Typ.
In den Fall ist aber keine Initialisierung notwendig, diese oder eine Zuweisung ist nur vor dem ersten Lesezugriff notwendig.
Mit welchen Wert eine Initialisierung ist eher fachlicher Natur und nicht technischer Natur.
Als Vorschlag was kürzer ist (ungetestet):
// public DateTime NextBuisinessDay(DateTime date, Dictionary<DateTime, string> holidays)
public DateOnly NextBuisinessDay(DateOnly date, Dictionary<DateOnly, string> holidays)
{
while (IsWeekend(date) || IsHoliday(date, holidays))
{
date = date.AddDays(1);
}
return date;
}
Ist ja schon ein Unterschied ob A4, A5, A3 oder andere Papiergrößen im Drucker liegen.
Ich habe mit Drucken ewig nichts mehr zu tun gehabt. aber die Einheiten sind wohl andere mm oder 100/inch sind dort üblich.
Wie Th69 geschrieben hat kann man die Transformation angeben um die Logik für das Zeichnen nur einer Einheit machen muss.
PrintPageEventArgs bietet doch die Eigenschaften für die Seitengröße.
Diese musst Du entsprechende verwenden und umrechnen, für das Zeichnen der Linien.
Eine Bitmap hat eine andere DPI z.B. 96, als ein Drucker (z.B. 300 oder 600).
Siehe auch Beispiel PrintDocument.PrintPage Ereignis (System.Drawing.Printing)
Wenn ich das richtig sehe wird erst eine Bitmap erstellt, welche dann auf das PrintDocument gezeichnet wird.
Warum der Umweg über das Bitmap und nicht direkt auf e.Graphics zeichnen?
Warum extra curl für den Download starten.
Die URL ist doch vorhanden, dann kannst du doch den HttpClient nehmen.
Bei der Menge wird es aber schon schwierig diese komplett im Speicher (Liste) zuhalten.
Was sind das den für Objekte?
Ggf. würde sich auch eine relationale Datenbank, wie SQLite an bieten.
Die WebClient Klasse sollte nicht mehr verwendet werden, sondern die HttpClient Klasse.
Ist das eine personalisierte Version TeamViewer QuickSupport?
Download von TeamViewer für die verschiedenen Plattformen ist unter https://www.teamviewer.com/de/download/ erreichbar.
Der Download für die normale aktuelle Version vom QuickSupport ist doch immer der gleiche.
https://download.teamviewer.com/download/TeamViewerQS.exe
In der Liste der versendeten Nachrichten zeigen die Links der Seiten auf die der Inbox.
Lassen sich privat versendetet Nachrichten nicht löschen?
Warum die Methoden umständlich per Reflection in ein Dictionary packen gerade wenn die statisch sind und nicht bei der Definition.
Dictionary<string, Func<bool>> methodMap = new();
methodMap["true"] = static () =>
{
return true;
};
methodMap["false"] = static () =>
{
return false;
};
Es gibt laut Doku die Methode ServerManager.OpenRemote(String) die wohl das macht was Du willst.
Du öffnest die Datei mit einen relativen Pfad und dieser muss halt nicht der sein wo die exe liegt.
Das aktuelle Verzeichnis kann mit Directory.GetCurrentDirectory Methode ermittelt werden.
Ich bin mit jetzt auch nicht ganz sicher, aber ich meine wenn das Programm aus Visual Studio gestartet wird ist das aktuelle Verzeichnis in dem die Projektdatei liegt.
Sollte nicht auch folgendes zum Ergebnis führen
var minute = 7; // nur z.B.
var gerundet = minute - (minute % 5); // 5 = 7 - (7 % 5)
break ist aber keine Lösung. Denn was machst Du, wenn es mehr als eine Zeile ist.
Schaue dir DataGridViewRow.IsNewRow Eigenschaft an.
Ich habe ewig nichts mehr mit Winforms und dem DGV gemacht.
Aber kann es sein das die NullReferenceException beim zweiten Durchlauf kommt.
Ich meine wenn die Rows durchlaufen werden sind alle dabei, auch die Zeile um eine neue zustellen dabei.
Was man machen könnte wäre die Ausgabe von where zu parsen.
where externesProgramm.exe
Schaue Dir mal https://keepachangelog.com/ an.
Auf UI Elemente darf nur auf dem UI-Thread zugriffen werden.
[FAQ] Controls von Thread aktualisieren lassen (Control.Invoke/Dispatcher.Invoke)
Sieht für mich wie ein Netzwerkpfad aus, also kann man https://docs.microsoft.com/de-de/dotnet/api/system.io.file.readallbytes?view=net-6.0 nehmen und braucht kein HttpClient.
Schaue Dir auch FileStreamResult an
https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.mvc.filestreamresult?view=aspnetcore-6.0 besser
https://www.aspsnippets.com/Articles/FileStreamResult-Net-Core-Example-Using-FileStreamResult-in-ASPNet-Core-MVC.aspx
Ohne eine Prüfung (Berechtigung, ...) eine Datei zurückzugeben ist vielleicht keine so gute Idee.
Sehe Dir folgende Links an:
How to manage the global packages, cache, temp folders in NuGet
nuget.config reference
Per UDP Broadcast kann man die SQL Server im lokalen Netzwerk ermitteln analog zur SqlDataSourceEnumerator, dazu siehe GitHub - mrsquish/SqlBrowserClient: A replacement for SqlDataSourceEnumerator in .Net5
Du willst eine Konsolen Anwendung und darin WinForms verwenden?
Siehe dir mal Konsolenfenster und Windows-Fenster in einer .NET-5.0-App und OutputType für WPF- und WinForms-Apps auf WinExe festgelegt an.
<DisableWinExeOutputInference>true</DisableWinExeOutputInference>
Sie können diesen Konstruktor nicht verwenden, um schreibgeschützte Dateien zu öffnen. Stattdessen müssen Sie einen Konstruktor verwenden, der einen- FileAccess Parameter akzeptiert, dessen Wert auf festgelegt ist FileAccess.Read .
Ab ASP.NET Core 2.1 ist die Verwendung von Ok(...) nicht mehr notwendig.
Rückgabetypen für Controlleraktionen in der ASP.NET Core-Web-API
Als Alternative bietet sich ggf. eine Symbolische Verknüpfung.
if (await Management())
Der Operator „await“ (C#-Referenz)
[Tipp] Anfängerhinweis == true / == false
Wir suchen nun eine performante Möglichkeit, die es ermöglich das gewünschte Feature umzusetzen.
Dazu habe ich einen alternativen Vorschlag gemacht.
Aber mir persönlich ist dieses Feature relativ egal, da ich es nicht brauche.
Ich kenne nicht die Post pro Zeit und was so gelesen wird pro Zeit.
Ich kann mir nur vorstellen wenn die Forenübersicht aufgerufen wird, das es schneller geht da weniger Tabellen betroffen sind.
Aber dafür müsste man es testen.
dass wir bei jeder Registrierung sofort für 117.000 Themen Dateneinträge erzeugen müssen
Wenn für einen neuer User alle Themen als ungelesen gekennzeichnet sein soll, dann Ja.
Ich würde sagen bei einen neuen User ist für ihn alles als gelesen gekennzeichnet.
Und das Tracking beginnt erst mit der Registrierung.
und gleiches bei neuem Thema für 30.000 User. Hinzu kommt, dass wir Stati erzeugen müssen, die womöglich bei vielen Usern nie wieder abgefragt werden (weil Konten inaktiv etc).
Dem könnte man entgegen wirken, das nur User berücksichtigt werden deren letzte Aktivität nicht zu lange zurück liegt.
Ich weiß nicht, wie das schneller sein soll. Das ist ja gerade das, was wir nicht wollen: expotentielles Wachstum / Leistungsthema. Oder sehe ich das falsch?
Aber wenn ich das richtig sehe mit dem aktuellen Datenbankschema, spielt die Tabelle ForumBoardUserVisits keine Rolle um an die Informationen zu bekommen, ob alle Themen eines Boards gelesen sind.
Und anders müsste die Informationen aus mehreren Tabellen ermittelt werden, neben ForumThreadUserVisits müssten auch noch ForumPosts und ForumThreads berücksichtigt werden.
Bei meinen Vorschlag nur die eine Tabelle.
Weiterhin hat man damit auch die Möglichkeit auszuräumen, z.B. ältere Einträge aus der Tabelle löschen.
Und ich weiß nicht ob es gewünscht ist über die Jahre festzuhalten, wann was von jeden User gelesen wurde.
Ob das wirklich schneller, müsste man testen.
Wenn ich das richtig verstehe wird VisitedOn in ForumThreadUserVisits aktualisiert, wenn ein Thread aufgerufen.
Und das gleiche bei ForumBoardUserVisits, wenn ein Board aufgerufen wird.
Ich weiß nicht wie fix das Datenbankschema ist.
Ich hätte da einen Vorschlag.
Ist es wichtig zu wissen wann eine Thread zuletzt aufgerufen wurde oder reicht es nur zu wissen das für einen User ungelesene vorliegen.
Die Tabellen ForumThreadUserVisits und ForumBoardUserVisits werden durch ForumThreadUserUnread ersetzt.
Diese hat die Spalten UserId, ThreadId und BoardId.
Ist in der Tabelle ein Eintrag vorhanden, bedeutet es liegen ungelesene Post für einen Thread vor.
Wird ein neuer Post (oder auch neuer Thread) erstellt, wird in der Tabelle für alle User ein Eintrag erstellt, wenn noch nicht vorhanden.
Wird von einen User ein Thread aufgerufen, wird ein vorhandenen Eintrag wieder entfernt und man weiß dieser ist gelesen.
Ich greife mal das SQL Fragment von weiter oben auf
SELECT
Id,
BoardName,
(SELECT COUNT(*) FROM ForumThreadUserUnread WHERE UserId = @UserId AND BoardId = Id) AS CountUnreadThread
FROM ForumBoards
JOIN (hier Permission Check)
Ich kann nicht sagen wie Performant das ist, aber nur so als Idee.