Großer Anfänger Thread

Das .NET Framework ist im Grunde genommen nichts anderes als ein Windows API Wrapper.
Es ist darauf ausgelegt, Plattformunabhängigkeit zwischen den verschiedenen Windowsversionen zu ermöglichen.
Java hingegen ist darauf ausgelegt, die Plattformunabhängigkeit zwischen unterschiedlichen Betriebssystemen zu ermöglichen.
Daher macht es auch wenig Sinn, diese beiden Sprachen miteinander vergleichen zu wollen.
Weiterhin implementiert das .NET Framework aktuelle Technologien zum erstellen von Anwendungen, Webanwendungen und Services.
Es ist nach den heutigen Pradigma der Anwendungsentwicklung gestaltet
und repräsentiert somit heutigen Stand der Technik in diesem Gewerk.

Das kommende .NET Framework 3.0 (WinFX) soll die WinAPI immer mehr ablösen,
sodass man Anwendungen damit immer leichter und schneller entwickeln kann.

Natürlich macht es Sinn mit der Win API vertraut zu sein. Denn es gibt immer noch Problemfälle,
die das verwenden der WinAPI erfordern, weil diese eben noch nicht komplett vom .NET Framework implementiert wird.

Alles was Du über die WinAPI wissen musst findest Du in der MSDN
und eine Sammlung von den unterschiedlichsten WinAPI Calls auf http://www.pinvoke.net.
 
Danke!
Also .Net baut eigentlich auf die Win-API auf und vereinfacht das ganze ein wenig, was das Anwenden betrifft? Das heißt die Funktionen wie MessageBox werden nicht neu implementiert und Dateien wie user32.dll werden auch in den nächsten Windows Versionen von aktueller Bedeutung bleiben?
 
Akilein hat gesagt.:
Also .Net baut eigentlich auf die Win-API auf und vereinfacht das ganze ein wenig, was das Anwenden betrifft?
Ganz genau, aber ich würd es ein bischen anders formulieren.
.NET stellt die Funktionalitäten die Windows bietet OOP gerecht und größten Teils in Managed Code und zur Verfügung.

Akilein hat gesagt.:
Das heißt die Funktionen wie MessageBox werden nicht neu implementiert
Ja, aber das ist ein rudimentäres Standardelement welches von "richtigen" Anwendungen sowie neu implmementiert wird,
da es funktional einiges zu wünschen übrig lässt...
Akilein hat gesagt.:
und Dateien wie user32.dll werden auch in den nächsten Windows Versionen von aktueller Bedeutung bleiben?
Kommt darauf an in wie weit alle Funktionen der User32.dll von .NET implementiert werden.
Ziel ist es aber die gesamten Funktionalitäten von Windows in .NET unterzubringen.
Dies wird mit jeder .NET Framework Version immer weiter vorran schreiten...
 
Oh man, jetzt versuche ich schon ewig mit diesem dämlichen Timer klar zu kommen. Dazu habe ich versucht dieses Tutorial in VB.NET zu realisieren. Hat so weit auch wunderbar geklappt (zumindest bekomme ich keine Warnungen oder Fehler mehr), obwohl das Tut alles andere als vollständig ist, aber:
  • Wie kann ich dem Timer eine Laufzeit, z.B. 30 Sek. Countdown zuweisen (einen Wert übergeben)?
  • Wie bekomme ich einen Rückgabewert (z.B. ein TRUE ), wenn der der Countdown abgelaufen ist?
  • Wo finde ich eine vernünftige Anleitung? (ich brauche keine ausführliche Anleitung, die absoluten Grundlagen würden mir schon völlig reichen)
Mein Code:
Code:
Public Class Form1
    Dim a As Integer = 0

' Start-Button
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Timer1.Enabled = True
        Timer1.Start()
    End Sub

' Stop-Button
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Timer1.Stop()
    End Sub

' Reset-Button
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        a = 0
        Timer1.Enabled = False
        TextBox1.Text = 0
    End Sub

End Class
P.S.: Diesen Beitrag kenne ich schon und er hat mir nicht sehr weitergeholfen.

##### EDIT ##########
Um mich noch etwas klarer auszudrücken:
Mein komisches Programm (welches mir schon zum Hals heraus hängt, weil es von der Funktion her total primitiv ist und ich dennoch, inklusive Einarbeitung in VB.NET, schon über einen Monat daran sitze!) soll nach Ablauf eines bestimmten Intervalls ein Ereignis auslösen.
Wie kann ich das machen (ohne mir 20 Seiten englische Doku durchzulesen)? Ich hatte mir überlegt, alle 60 Sekunden die aktuelle Zeit mit dem eingestellten Intervall zu vergleichen. Ist das praktikabel oder wäre es besser, den eingestellten Intervall in einen "DateTime"-Datentyp umzuwandeln und dann das Programm gezielter schlafen zu lassen, also exakt bis zum benötigten Zeitpunkt? (Das Prog läuft immer im Hintergrund und wird nicht geschlossen)

Frei nach dem Motto:
Code:
If DateTime.Now.Hour = eingestellte_Stunde And DateTime.Now.Minute = eingestellte_Minute Then
' Do something
Else 
System.Threading.Thread.Sleep(60000);
End If

In eigener Sache:
Sorry, wenn ich hier mit meinen Kinderfragen nerve, aber ich muss das Programm schon bald fertig haben. Dabei muss kein perfekter Code herauskommen, "quick and dirty" reicht völlig aus und alleine komme ich irgendwie überhaupt nicht voran.
 
Zuletzt bearbeitet:
Also der Timer hat eine Eigenschaft Intervall. Dem kannst du deinen Countdown-Wert übergeben. Aber Achtung: Diese Eigenschaft erwartet Millisekunden. Daher einen Wert 1000 übergeben und eine Countdown-Zeit von 1sec. als Ergebnis.

Der Timer gibt kein True oder False oder was auch immer zurück. Ist das Intervall abgelaufen, wird ein Tick-Ereignis geworfen, welches mit dem entsprechenden Tick-EventHandler abgefangen werden kann. Darin solltest du dann deine Abarbeitung starten.

Ich hab dir ein kleines Demo-Programm bezüglich Timer angehängt. Das sollte dir zeigen wie der Timer funktioniert.
 

Anhänge

  • 25995attachment.zip
    23,7 KB · Aufrufe: 26
DAS nenne ich ein anschauliches Beispiel. Vielen Dank. ;-)

In kürze werde ich meine Liste vom Anfang dieses Threads mal um dein Beispiel erweitern...
 
Ich möchte noch hinzufügen das es insgesamt 3 verschiedene Timer gibt.
  1. Den System.Windows.Forms.Timer dessen Ereignisse Synchron zum Thread des Forms auf dem er definiert wurde ausgeführt wird.
  2. Der System.Timers.Timer der sich für den Einsatz in Componenten eignet.
    Er wird normal Weise asynchron zum HauptThread ausgeführt, besitzt aber zusätzlich die Eigenschaft SynchronizingObject.
    Wird dieses Eigenschaft nicht verwendet, werden dessen Ereignisse werden immer in einem separaten Thread ausgeführt,
    sodass es nicht möglich ist von dort aus auf Controls zuzugreifen.
    Wenn man aber dieser Eigenschaft ein Control zuweist, werden die Ereignisse auf dem Thread des angegebenen Controls ausgeführt.
  3. Und den System.Threading.Timer der zur Umsetzung von eigenen Timer implemenatation verwendet wird.
    Dieser arbeitet völlig asynchron und führt jedes Ereigniss in einem separaten Thread aus.
    Bei diesem Timer ist es günstig ihn für die Verwendung innerhalb eine Containerklasse unterzubringen,
    die alle geforderten Funktionalitäten implementiert.

Multithreading bei Windows Forms mit Timer-Klassen - ein Blick hinter die Kulissen
 
Eine weitere Sache:

Nehmen wir mal an, ich habe ein Verzeichnis, in dem eine Datei liegt.Wie kann ich den Dateinamen dieser Datei erhalten, wenn ich nur den Pfadnamen kenne?

### Edit ###
Schon gut:
Code:
MyFile = Dir("C:\Eigene Dateien\*.xls")

Wer lesen kann ist klar im Vorteil...:rolleyes:
 
Zuletzt bearbeitet:
Hallo zusammen.

Ich habe noch mal eine kleine Frage. Wie bekomme ich bei Funktionen Filecopy und Kill heraus, ob der Aufruf erfolgreich war? Denn beide Funktionen geben ja kein True oder False zurück.
 
Das sind VB6 Methoden und daher ist das nicht das richtige Forum für diese Frage. ;)
Bei der System.IO.File Klasse hingegen
kannst das Scheitern der Methoden anhand der geworfenen Exception herraus finden...
 

Neue Beiträge

Zurück