Bei der Ausgabe von GetString hängt hinten noch ein Leerzeichen dran.
Ich sehe gerade dass mein erster Post nicht ganz korrekt war: Du musst die Energieverwaltung nicht für den Konverter ändern, sonder für den zuständigen USB-Hub (im Zweifelsfall für alle die aufgelistet sind).
Damit hatten wir auch schon Probleme. Es gibt tatsächlich Modelle, die einfach nicht zuverlässig funktionieren. Wir liefern zu unseren Geräten immer welche von Delock, die haben sich bewährt - hoffe das war jetzt keine unerlaubte Werbung.
Hallo,
falls es sich bei dem Port um einen USB-RS232-Konverter handelt, könntest Du mal im Gerätemanager nachschauen. Möglicherweise ist da unter Eigenschaften/Energieverwaltung "Computer kann das Gerät ausschalten, um Energie zu sparen" aktiviert.
Gruß Tommix
Es ist nicht wirklich wichtig und man kommt auch nur drauf wenn man Langeweile hat, aber der Vollständigkeit halber:
Wenn ich auf der Seite myCSharp Mitglieder https://mycsharp.de/users den unten versteckten Sortiermodus auf "Registriedatum" ändere und dann auf Seite 2 wechsele ist es wieder auf "Beiträge" zurückgesetzt. Ändere ich es noch mal bin ich wieder auf Seite 1 usw.
'Morgen,
ich habe folgenden Code (.NET 6), bitte auf Debatten über den Nutzwert zu verzichten:
string text = "Hallo";
Console.WriteLine($"{text}: {text.GetHashCode()}");
Aufruf 1:
Hallo: -498394817
Aufruf 2:
Hallo: -1111031154
Aufruf 3:
Hallo: 422895921
Müsste der Hashcode nicht immer gleich bleiben oder habe ich da was grundlegendes nicht verstanden?
Gruß Tommix
'Morgen,
das scheint was Windows 10 - spezifisches zu sein. Unter Vista funktioniert der Code mit der Korrektur von Abt aus Post2.
Ja, klar. Und sicher nicht der Beste. Wenn ich mich recht entsinne (hab's mir mal mit ILSpy angeschaut) wird glaube ich zehn mal oder so der Kopiervorgang probiert bis bei Fehler eine Exception geworfen wird. Wenn ich ehrlich bin, war es auch eher die "Ich mach das jetzt seit 20 Jahren so, wieso geht das jetzt nicht mehr?"-Frage. Übrigens hier auch begründet: https://docs.microsoft.com/de-de/dotnet/core/compatibility/sdk/5.0/automatically-infer-winexe-output-type.
Da hast Du recht. Ich hatte mein Beispiel zu weit reduziert, früher gab es bei dem fehlenden STAThreadAttribute eine Exception, da konnte man das nicht übersehen.
Hallo Abt,
ich habe ein paar Hausgebrauchs-Tools, die das Resultat per System.Windows.Forms.Clipboard.SetText in die Zwischenablage kopieren, damit ich es in Excel einfügen kann. Ich weiß, dass das nicht besonder elegant ist, aber für mich zum reinen Privatgebrauch ist es ok.
Eine Message Box bzw. Fenster kannst Du aus einer Console App aber niemals öffnen.
Da muss ich widersprechen, wie ich weiter oben postete, hat das bis .NET Core 3 noch funktioniert und in .NET 2-4 auch.
Allerdings hat der Post von david.m die Frage beantwortet, trotzdem Danke für die Zeit, die Du Dir genommen hast.
Gruss Tommix
Hallo David,
genau das hatte ich gesucht. Vielen Dank!
Tommix
Hallo,
wenn man auf "Wie poste ich richtig?" unter Punkt 6 auf "BBCode-Kurzreferenz" klickt kommt eine 404. Eine Zeile drüber scheint ein Verweis auf ein Bild auch nicht zu funktionieren.
Gruss Tommix
Hallo,
obwohl das Thema nach Windows Forms klingt wird es wohl bei WPF nicht anders sein, drum poste ich hier. Folgendes Szenario: Ich habe (hier als möglichst simples Beispiel) ein Konsolen-Programm, welches Windows Forms nutzt:
using System;
using System.Windows.Forms;
namespace Test
{
class HelloWorld
{
static void Main()
{
Console.WriteLine("Hello world!");
MessageBox.Show("Hello world!");
}
}
}
Unter .Net 4.x und vorher hat man einen Verweis auf System.Windows.Forms hinzugefügt und gut war. Unter .Net core musste ich die Projektdatei ändern:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>
</Project>
Soweit, so gut. Jetzt will ich das Gleiche mit .Net 5 machen.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net5.0</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>
</Project>
Führt zu> Fehlermeldung:
error NETSDK1136: Die Zielplattform muss auf Windows festgelegt werden (üblicherweise durch Einbeziehen von "-windows" in die TargetFramework-Eigenschaft), wenn Windows Forms oder WPF verwendet wird oder auf Projekte oder Pakete verwiesen wird, die dies tun.
Also:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net5.0-windows</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>
</Project>
Jetzt läuft es zwar, die MessageBox erscheint, aber ich bekomme keine Ausgabe auf der Konsole. Im Debugger geht gar kein Konsolenfenster auf und wenn ich es aus der Kommandozeile starte, fehlt die Ausgabe. Das es bei Target Windows-Anwendung keine Konsole gibt, war schon immer so. Aber ich will ja nun gerade eine Konsolen-Anwendung haben und nur auf die Klassen aus Windows-Forms zugreifen. Wenn ich google lande ich immer nut bei dem Tip mit dem UseWindowsForms aber vielleicht formuliere ich die Frage auch falsch. Bin für jeden Denkanstoß dankbar.
Gruss Tommix