Threads. Components. (Download File My.Computer.Network.DownloadFile("http://aetos.it.teithe.gr/~asidirop/ADE/_ files/list.txt", "C:\Temp\list.

Σχετικά έγγραφα
Πώς εκτυπώνουμε μία λίστα από εγγραφές μίας Access database

Γράψιμο και Διάβασμα σε φύλλο του Excel

Αρχεία κειμένου και η VB.NET

Πώς εκτυπώνουμε μία λίστα εγγραφών από μία Access database (γενικός τρόπος)

ΣΧΕΣΕΙΣ στην Northwind

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

1. ΕΛΕΓΧΟΙ ΕΓΚΥΡΟΤΗΤΑΣ ΣΕ ΜΙΑ ΦΟΡΜΑ

Lab1 Ανάπτυξη απλής εφαρµογής. Solutions, Projects, GUI, Events, Debugging.

ΟΔΗΓΙΕΣ ΔΗΜΙΟΥΡΓΙΑΣ ΕΦΑΡΜΟΓΗΣ ΔΙΑΧΕΙΡΙΣΗΣ ΑΜΕΣΟΥ ΑΡΧΕΙΟΥ ΣΕ ΠΕΡΙΒΑΛΛΟΝ VISUAL STUDIO NET

Εφαρμοσμένη Πληροφορική ΙΙ (Εργ.) Visual Basic 2010 Εργαστήριο 6 ο

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ

Μπίρμπο Μπλένταρ & Τζούμπα Πηνελόπη

Electronics μαζί με τα συνοδευτικά καλώδια και το αισθητήριο θερμοκρασίας LM335 που περιέχονται

New Project Windows Forms Applications

ΜICROSOFT VISUAL STUDIO Eργ 1: Ανάπτυξη απλής εφαρµογής: Solutions, Projects, GUI, Events, Debugging. Εισαγωγή

Αρχεία Ένα αρχείο αποτελείται από μία σειρά ομοειδών δεδομένων που ονομάζονται λογικές εγγραφές (logical record)

Πτυχιακή Εργασία των Σπουδαστών: Σταμέλλος Απόστολος Κυμπάρης Κωνσταντίνος

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

1o ΕΠΑΛ- Ε.Κ. Συκεών -Τομέας: Ηλεκτρονικής, Ηλεκτρολογίας και Αυτοματισμού Εκπαιδευτικοί: Μπουλταδάκης Στέλιος Μαυρίδης Κώστας

άσκηση Hide UI Elements 7.2 Try and Catch

1. Σειριακές επικοινωνίες Σειριακές επικοινωνίες και Visual Basic Τα πρωτόκολλα UDP και TCP...15

Πίνακας Περιεχομένων. 1. Locals Window & BreakPoints

Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

Upload zip αρχείων. Στοιχεία Σύνδεσης Η κλήση του REST Service για το upload zip αρχείων προϋποθέτει

Στοιχεία Προγραμματισμού Σε Γραφικό Περιβάλλον Φύλλο εργασίας 1 ο

Έκδοση Εγγράφου: 1.2- Ημερομηνία Τελευταίας Ενημέρωσης: 21 Ιανουαρίου Upload zip αρχείων-

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΘΕΜΑ: Υλοποίηση προγράµµατος σε Visual Basic µε σκοπό τη δηµιουργία του προγράµµατος εξεταστικής του Τ.Ε.Ι.

ΓΡΑΠΤΕΣ ΠΡΟΑΓΩΓΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΙΟΥΝΙΟΥ

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα

Τα αντικείμενα ή Χειριστήρια και οι βασικές ιδιότητες τους (properties)

Παρουσίαση Delphi. Μέμος-Μπαγκράτσας Ιωάννης 1232 Μαργαρίτης Νικόλαος 1226

Προγραμματισμός Η/Υ. Ενότητα 12 η : Αρχεία Κειμένου. Ι. Ψαρομήλιγκος Χ. Κυτάγιας Τμήμα Λογιστικής & Χρηματοοικονομικής

4 η Εργαστηριακή Άσκηση

Υπολογιστικά Συστήματα

Ask1, Ask2, Ask3. private void jbutton1actionperformed(java.awt.event.actionevent evt) { jlabel1.settext( "You pressed the 1st button" ); }

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό

Γ3.3.Μ7 ΕΠΑΝΆΛΗΨΗ ΜΈΡΟΣ Α: ΈΝΝΟΙΕΣ ΤΙ ΕΊΝΑΙ Η VISUAL BASIC ΤΙ ΜΠΟΡΟΎΜΕ ΝΑ ΚΆΝΟΥΜΕ ΜΕ ΤΗ VISUAL BASIC ΑΝΤΙΚΕΊΜΕΝΑ: ΦΌΡΜΑ ΚΑΙ ΧΕΙΡΙΣΤΉΡΙΑ ΕΤΙΚΈΤΑ LABEL

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ

Το παρόν εκπονήθηκε στο πλαίσιο. του Υποέργου 13 «Προσαρµογή Λογισµικού-Φάση ΙΙΙ»

5. MΑΚΡΟΕΝΤΟΛΕΣ. Η δηµιουργία Μακροεντολής γίνεται µε δύο τρόπους :

ΔΟΜΗΜΕΝΟΣ ΟΠΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΕ ΠAΡΑΘΥΡΙΚΟ ΠΕΡΙΒΑΛΛΟΝ με τη Γλώσσα Προγραμματισμού VISUAL BASIC (1 ο ΕΠΙΠΕΔΟ)

ΛΥΚΕΙΟ ΣΟΛΕΑΣ Σχολική χρονιά

Μετατροπή χαρακτήρων ASCII σε ακέραιο αριθµό (atoi) & Άνοιγµα αρχείου µέσα από τo QtSPIM, διάβασµα, και αποθήκευση του περιεχοµένου του στη µνήµη

ΔΑΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ 1. Επανάληψη Θεωρίας 22/1/09

Υπολογιστικά Συστήματα

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

System.IO Namespace Imports System.IO

Τ.Ε.Ι. ΛΑΜΙΑΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΝΙΚΗΣ

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ

Άσκηση 1 (α) Να διατυπώσετε την πιο κάτω λογική έκφραση στη Visual Basic κάνοντας χρήση μεταβλητών:

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ

ΛΥΚΕΙΟ ΑΓΙΑΣ ΦΥΛΑΞΕΩΣ ΣΧΟΛΙΚΗ ΧΡΟΝΙΑ ΓΡΑΠΤΕΣ ΠΡΟΑΓΩΓΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΙΟΥΝΙΟΥ. Ονοµατεπώνυµο :... Τµήµα :... Αριθµός :...

Κων/νου Στυλιάδη. Visual Basic στην Access Κλήρωση Εξεταστών Υποψηφίων Οδηγών

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό

Φροντιςτήριο. Linked-List

Προαπαιτούμενες Ασκήσεις 5 ου Εργαστηρίου. Dose stoixeio (integer) : 25 Found stoixeio in position 7 Dose stoixeio (integer) :94 Value not found

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

alpha Language age (3/5) alpha Language Φροντιστήριο Syntax Directed Translation and

Άσκηση 5 -Δηµιουργία ιστοσελίδων µε HTML µέρος 5 ο

H κλάση ArrayList. Γιώργος Θάνος. Γραφείο Γ. Γκλαβάνη 37. Αντικει ενοστραφής Προγρα. ος όροφος

17TimeThis.h function returns reference pointer to same object { return *this; }

ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ V ΕΚΠΑΙΔΕΥΤΗΣ ΓΑΛΑΝΟΣ ΓΕΩΡΓΙΟΣ

Μονοδιάστατοι Πίνακες

Τίτλος: Πρόγραμμα Κοινοχρήστων Πολυκατοικιών. ΠΑΠΑΝΙΚΟΛΑΟΥ ΑΛΕΞΑΝΔΡΟΣ 2891

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΜΗΧΑΝΟΓΡΑΦΗΣΗ ΝΟΣΟΚΟΜΕΙΟΥ

HY150a Φροντιστήριο 3 24/11/2017

Το παρόν εκπονήθηκε στο πλαίσιο του Υποέργου 13 «Προσαρµογή Λογισµικού-Φάση ΙΙΙ»

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

ΣΗΜΕΙΩΣΕΙΣ ΘΕΩΡΙΑΣ ΜΑΘΗΜΑΤΟΣ ασική Πληροφορική 1 Θεωρία 5 ου ΕΞΑΜΗΝΟΥ ΜΑΘΗΜΑ 1 ο Λάζαρος Σ. Ηλιάδης Αναπληρωτής Καθηγητής ΠΘ

Διδάσκων: Παναγιώτης Ανδρέου

2. Με το εικονίδιο συντόμευσης στην επιφάνεια εργασίας των Windows.

Εντολή If-Then-Else Σκοπός Μαθήματος

Βυζαντινός Ρεπαντής Κολλέγιο Αθηνών 2010

Συνέχεια του αντικειμενoστραφούς προγραμματισμού Επέκταση των κλάσεων σε Visual Components (Window Controls) Κατασκευή του Interface στο Design Time,

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07

(3) Από την εργαλειοθήκη επιλέξτε το εργαλείο «ετικέτας (Label)». Δημιουργήστε μια ετικέτα στην φόρμα σας.

Zeus ColorControls Ver Manual

ΣΗΜΕΙΩΣΕΙΣ ΓΙΑ ΤΗ VISUAL BASIC Γ ΓΥΜΝΑΣΙΟΥ

Διπλωματική Εργασία ΟΙΚΙΑΚΟΣ ΑΥΤΟΜΑΤΙΣΜΟΣ ΜΕ ΧΡΗΣΗ ΜΙΚΡΟΕΛΕΓΚΤΗ

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

Είσοδος Έξοδος - Μεταβλητές

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

Η ιευρυµένη Επιχείρηση Ενότητα Ηλεκτρονικής Μάθησης. «CourseLab» 3ο Φροντιστήριο. Ιωάννα Ταλάντη Υπ. ιδάκτωρ, Τµήµα ιοικητικής Επιστήµης & Τεχνολογίας

ΚΕΝΤΡΟ ΠΛΗ.ΝΕ.Τ. Ν. ΦΛΩΡΙΝΑΣ

4. Επιλογή και Επανάληψη

Σι θα δούμε σε αυτό το μάθημα;

If timi >20 Then Print ok Else Print ng EndIf. a = IIF(a>=20, 0, a)

3D FLASH ANIMATOR (3DFA)

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

2 Visual Basic. Χαριτούδη Γεωργία

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

Πληροφορική. Ενότητα 5 η : Εισαγωγή στον Προγραμματισμό με τη Visual Basic. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

Οντοκεντρικός Προγραμματισμός

Το παρακάτω πρόγραμμα ορίζει δυο κλάσεις την SimpleThread και την TwoThreadsTest:

Transcript:

Threads Imports System.Threading (Download File My.Computer.Network.DownloadFile("http://aetos.it.teithe.gr/~asidirop/ADE/_ files/list.txt", "C:\Temp\list.txt") Components Αν βάλουµε πάνω στην φόρµα ένα BackgroundWorker Component µπαίνει στο component tray. [1]

Sequence of events Form s thread Call RunWorkerAsync method ProgressChanged event handler DoWork event handler (work is going on) Background worker s thread To cancel, call CancelAsync method RunWorkerCompleted event handler Check CancellationPending property If not canceled,do work and ReportProgress (work is complete) Εστω ότι έχουµε δυο φόρµες Form1 (Main Thread) και Form2 (Second Form) Θέλουµε όταν γίνεται κλικ το Button1 της Form1 να καλείται 2 ο thread που τρέχει µαζί µε το 1 ο thread BackgroundWorker1.RunWorkerAsync() κάνοντας ότι εργασίες πρέπει να κάνει BackgroundWorker1_DoWork ) Το 2 ο thread αν δεν το σταµατηθεί BackgroundWorker1.CancellationPending µπορεί να δίνει αναφορά στο 1 ο thread για το ποσοστό της εργασίας του BackgroundWorker1.ReportProgress(work) κάθε φορά που αλλάζει η εργασία του BackgroundWorker1_ProgressChanged Το 2 ο thread όταν τελειώσει την δουλειά του BackgroundWorker1_RunWorkerCompleted θα σταµατηθεί µε το BackgroundWorker1.CancelAsync() Στην παρακάτω φόρµα (Μain Thread) πατώντας το κουµπάκι Call 2 nd thread.. καλείται να ανοίξει ασυγχρόνως ένα 2 ο Thread (Second Form), να περιµένει λιγάκι και κατόπιν να κλείσει. [2]

Στην 1 η φόρµα υπάρχει ένα progress bar και στην 2 η µια ετικέτα Στην Form1 (Main Thread) : Imports System.Threading Public Class MainThread Private Sub MainThread_Load(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles MyBase.Load 'Αλλaγή θέση της φόρµας, για να φαίνεται καλύτερα όταν ανοίξει και η 2η φόρµα Me.Location = New System.Drawing.Point(200, 400) Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button1.Click Button1.Visible = False 'Καλείται το 2 ο thread BackgroundWorker1.RunWorkerAsync() Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As _ System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork 'H δουλειά το 2 ου thread είναι ΝΑ ΑΝΟΙΞΕΙ ΤΗΝ 2 η ΦΟΡΜΑ 'να κάνει ΟΤΙ ΠΡΕΠΕΙ ΝΑ ΚΑΝΕΙ (π.χ. να µετράει από 1..100) 'και να δίνει ΑΝΑΦΟΡΑ (αν θέλουµε) για το ΤΙ ΚΑΝΕΙ SecondForm.Show() 'Χρονοκαθυστέρηση - έστω εδώ διάφορες λειτουργίες 1..100 (βαριές) και ένα 'sleep για να «φανούν» βαριές For work As Integer = 1 To 100 ' The number of milliseconds for which the thread is blocked. Thread.Sleep(100) BackgroundWorker1.ReportProgress(work) SecondForm.Label1.Text = "Τρέχουσα Λειτουργία: " & work.tostring SecondForm.Refresh() [3]

Next SecondForm.Close() Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As System.Object,_ ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles _ BackgroundWorker1.RunWorkerCompleted Button1.Visible = True 'όταν τελειώσει το σταµατάµε BackgroundWorker1.CancelAsync() Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As System.Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged End Class ProgressBar1.Value = e.progresspercentage 2 η ΑΣΚΗΣΗ 0,0 100,0 Στην φόρµα (Μain Thread) θα µπορούσε να υπάρχει και άλλο ένα κουµπάκι για ακύρωση του 2 ου thread BackgroundWorker1.CancelAsync() Eπίσης θα µπορούσε µέσα στα διάφορα στάδια της εργασίας του 2 ου thread να ελέγχει αν ακυρώνεται If BackgroundWorker1.CancellationPending Then e.cancel = True Form2.Close Exit Sub End If Όπως και στο παράδειγµα components.sln 300 25 Size ProgrBar 300*1/3 = 100 Size TextBox 300*2/3 = 200 100 200 Private Sub EnchancedProgressBar_SizeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.SizeChanged Me.ProgressBar1.Location = New System.Drawing.Point(0, 0) Me.ProgressBar1.Size = New System.Drawing.Size(Me.Width * 1 / 3, Me.Height) Me.TextBox1.Location = New System.Drawing.Point(Me.Width * 1 / 3, 0) Me.TextBox1.Size = New System.Drawing.Size(Me.Width * 2 / 3, Me.Height) [4]

Imports System.IO Imports System.Net Imports System.Text Imports System.Text.RegularExpressions Imports System.Threading Public Class EnhancedProgressBar 'Public Property URL() As String 'Public Property SavePath() As String ' Private Sub BackgroundWorker1_DoWork(ByVal sender As Object, ByVal e As _ System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork 'Button1.Visible = True Thread.Sleep(1000) Dim request As WebRequest = WebRequest.Create(Me.URL) request.credentials = CredentialCache.DefaultCredentials Dim response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse) Dim datastream As Stream = response.getresponsestream() ' Open the stream using a StreamReader for easy access. Dim reader As New StreamReader(dataStream) ' compute the filename Dim regfile As Regex = New Regex("(^.*[=\\/?&])") Dim filename = regfile.replace(response.responseuri.absoluteuri.tostring, "") If filename = "" Then filename = "index.html" End If Dim writer As StreamWriter writer = File.CreateText(SavePath & "\\" & filename) ' Dim line As String Dim size As Integer = 0 Dim readbytes As Integer Dim buffer(200) As Char Do readbytes = reader.readblock(buffer, 0, 128) For i = 1 To readbytes writer.write(buffer(i - 1)) Next 'line = reader.readline() size += readbytes 'MsgBox(100.0 * size / response.contentlength) BackgroundWorker1.ReportProgress(100.0 * size / response.contentlength) 'writer.writeline(line) Thread.Sleep(100) Loop Until readbytes = 0 [5]

BackgroundWorker1.ReportProgress(100) ' Cleanup the streams and the response. reader.close() datastream.close() response.close() writer.close() 'Private Sub BackgroundWorker1_ProgressChanged 'Private Sub BackgroundWorker1_RunWorkerCompleted 'Private Sub Button1_Click End Class [6]