Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Sprawdzanie prędkości pobierania, odstęp w czasie


Rekomendowane odpowiedzi

Opublikowano

1. Sprawdzanie prędkości pobierania
Powiedźmy że program pobiera kilka plików. Podczas tego ma pokazywać z jaką prędkością pliki są pobierane i ile zostało czasu do końca pobierania.

 

2. Odstęp w czasie

Jak zrobić że wykonuje się jakiś kod w końcu jest 10 sekundowy odstęp przed wykonaniem reszty kodu?
Jest jakaś prosta metoda? Najlepiej jak najkrótsza i najprostsza.

 

Oczywiście za pomocne posty nie będę szczędził lubię to!

Opublikowano

Nie jestem pewny, ale chyba się nie da szacować czasu do końca pobierania.

Masz tu licznik prędkości dodaj Timer1 i Label1

Public Class Form1

    Dim sw As New Stopwatch
    Private Sub Button1_Click _
    (ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button1.Click
        ' start stopwatch just before sending request
        sw.Start()
        Using wc As New Net.WebClient
            AddHandler wc.DownloadFileCompleted, AddressOf FileCompleted
            wc.DownloadFileAsync(New Uri("jakastamstrona.pl/download"), gdzie ma być zapisany plik)
            'Start timer
            Timer1.Enabled = True
        End Using
    End Sub


    Dim speed As Integer
    Dim length As Long


    Private Sub FileCompleted _
    (ByVal sender As Object, _
    ByVal e As System.ComponentModel.AsyncCompletedEventArgs)
        If e.Error Is Nothing Then
            ' Display how much time it took to download file
            sw.Stop()
            MsgBox("Done!")
            Label1.Text = "Done!"
         Timer1.Stop()
        Else
            MsgBox("An error occured: " & e.Error.Message)
        End If
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        ' Show average speed
        Dim info As New IO.FileInfo("Zapisany plik"))
        length = (info.Length) / 1000
        speed = length / sw.Elapsed.Seconds
        Label1.Text = "Pobieranie " & speed & " kb/sec"
    End Sub
End Class

.

Opublikowano

 

Nie jestem pewny, ale chyba się nie da szacować czasu do końca pobierania.

Masz tu licznik prędkości dodaj Timer1 i Label1

Public Class Form1

    Dim sw As New Stopwatch
    Private Sub Button1_Click _
    (ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button1.Click
        ' start stopwatch just before sending request
        sw.Start()
        Using wc As New Net.WebClient
            AddHandler wc.DownloadFileCompleted, AddressOf FileCompleted
            wc.DownloadFileAsync(New Uri("jakastamstrona.pl/download"), gdzie ma być zapisany plik)
            'Start timer
            Timer1.Enabled = True
        End Using
    End Sub


    Dim speed As Integer
    Dim length As Long


    Private Sub FileCompleted _
    (ByVal sender As Object, _
    ByVal e As System.ComponentModel.AsyncCompletedEventArgs)
        If e.Error Is Nothing Then
            ' Display how much time it took to download file
            sw.Stop()
            MsgBox("Done!")
            Label1.Text = "Done!"
         Timer1.Stop()
        Else
            MsgBox("An error occured: " & e.Error.Message)
        End If
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        ' Show average speed
        Dim info As New IO.FileInfo("Zapisany plik"))
        length = (info.Length) / 1000
        speed = length / sw.Elapsed.Seconds
        Label1.Text = "Pobieranie " & speed & " kb/sec"
    End Sub
End Class

 

Jak to się nie da szacować czasu do końca pobierania? Po prostu trzeba trochę pomyśleć, będzie nam potrzebny rozmiar pliku oraz prędkość z jaką jest pobierany, łatwo to wyliczyć. 

apple.png

Opublikowano

Wystarczy jeszcze ten odstęp w czasie zrezygnuje z tego przewidywania zakończenia pobierania.

Opublikowano

To nie to u mnie po wpisaniu:

Thread.Sleep(ilosc milisekund)

Okno jakby się zawiesza na czas wpisany. A program ma działać dalej np coś jest wpisane w label. Po kliknięciu przycisku ma być zmieniony napis i po 5-10sekundach ma zniknąć label. chodzi o tą przerwę.
Przez Thread.Sleep nawet nie zmienia się napis który jest wcześniej w kodzie z nie wiadomych powodów.

Opublikowano

To nie to u mnie po wpisaniu:

Thread.Sleep(ilosc milisekund)

Okno jakby się zawiesza na czas wpisany. A program ma działać dalej np coś jest wpisane w label. Po kliknięciu przycisku ma być zmieniony napis i po 5-10sekundach ma zniknąć label. chodzi o tą przerwę.

Przez Thread.Sleep nawet nie zmienia się napis który jest wcześniej w kodzie z nie wiadomych powodów.

To moze w innym wątku to rob i potem z tamtego zmieniaj cos.

Opublikowano

ale jemu nie o taką "przerwę" chodzi

 

Wstaw Timer i w akcji wciśnięcia buttona ustaw

Timer1.Enabled = True

Timer1.Start()

 

Czas timera ustaw na 5 sekund

 

W akcji timera (Timer1.OnTick) ustaw:

Label1.Text = "Coś tam innego"

Timer1.Stop()

Opublikowano

Kod zamiast komentarza ma być przerwa 5 sekund. @theoo chyba wie o co mi chodzi ale za mało wyraźnie mi to wytłumaczył (jestem trochę oporny)

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Label2.Text = "Pobieranie anulowane"
        '5sekun odstepu przed resztą kodu
        ProgressBar1.Hide()
        Button4.Hide()
        Label2.Hide()
    End Sub

PS. label jest widoczny podczas włączania pobierania stąd zmiana textu w label'u.
 

@QerDark wpisz:

Thread.Sleep(20)
W tym nawiasie wpisujesz ilość milisekund w cyfrach ;)
 
A przed Public class Form1 dodajesz:
Imports System.Threading

Dzięki @1361622928-U485574.pngBremLOL że próbowałeś wytłumaczyć ale nie jestem idiotą.. Właśnie tak to robiłem. A nie wyświetla się bo po tej komendzie okno zawiesza się (zamiast przerwy 5 sekundowej) i później label znika(tak ma być). Wprowadź do VB kod ten co podałem wyżej i użyj tego co powiedziałeś ale na 5000 ms. Wygląda jak lag x_x

Opublikowano

Kod zamiast komentarza ma być przerwa 5 sekund. @"theoo" chyba wie o co mi chodzi ale za mało wyraźnie mi to wytłumaczył (jestem trochę oporny)

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Label2.Text = "Pobieranie anulowane"
        '5sekun odstepu przed resztą kodu
        ProgressBar1.Hide()
        Button4.Hide()
        Label2.Hide()
    End Sub
PS. label jest widoczny podczas włączania pobierania stąd zmiana textu w label'u.

 

Dzięki @"BremLOL" że próbowałeś wytłumaczyć ale nie jestem idiotą.. Właśnie tak to robiłem. A nie wyświetla się bo po tej komendzie okno zawiesza się (zamiast przerwy 5 sekundowej) i później label znika(tak ma być). Wprowadź do VB kod ten co podałem wyżej i użyj tego co powiedziałeś ale na 5000 ms. Wygląda jak lag x_x

Bo tak dziala sleep w glownym watku. Musisz zrobic nowy i z tamtego wywolac zmiane tekstu itp
Opublikowano

ale po co zabawa z wątkami? Jemu zwykły timer wystarczy...

 

Do formy dodaj Timer oraz ustaw go na 5000ms 

 

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        'Tutaj dzieje się wszystko po ticku timera (5000ms)
        'Zatrzymujemy Timer aby się nie zapętlał
        Timer1.Stop()
        'Oraz wykonujemy resztę kodu
        ProgressBar1.Hide()
        Button4.Hide()
        Label2.Hide()
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'Po wciśnięciu buttona zmienia się tekst w label2
        Label2.Text = "Pobieranie anulowane"
        'Oraz uaktywnia się timer ustawiony na 5000ms
        Timer1.Enabled = True
        Timer1.Start()
    End Sub
Opublikowano

ale po co zabawa z wątkami? Jemu zwykły timer wystarczy...

 

Do formy dodaj Timer oraz ustaw go na 5000ms 

 

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        'Tutaj dzieje się wszystko po ticku timera (5000ms)
        'Zatrzymujemy Timer aby się nie zapętlał
        Timer1.Stop()
        'Oraz wykonujemy resztę kodu
        ProgressBar1.Hide()
        Button4.Hide()
        Label2.Hide()
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'Po wciśnięciu buttona zmienia się tekst w label2
        Label2.Text = "Pobieranie anulowane"
        'Oraz uaktywnia się timer ustawiony na 5000ms
        Timer1.Enabled = True
        Timer1.Start()
    End Sub

Dzięki już teraz tylko @theoo wiedział o co mi chodzi.. Mógłbyś dać gotowy kod? Z ustawionym Timer'em..

Opublikowano

Sory, ale robisz sobie jaja czy co?

Człowieku dałem Ci gotowca! Kod do ctrl+c i ctrl+v wystarczy w projekcie tylko wstawić timer z opóźnieniem a ty pytasz czy dam Ci gotowy kod...

Opublikowano
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Timer1.Stop()
        ProgressBar1.Hide()
        Button4.Hide()
        Label2.Hide()
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'Ustawianie czasu timera w milisekundach
        timer1.interval = 5000
        Label2.Text = "Pobieranie anulowane"
        Timer1.Enabled = True
        Timer1.Start()
    End Sub

Dodaj timer1. Ale najlepsze jest:

system.threading.thread.sleep(5000)

.

Opublikowano

Sory, ale robisz sobie jaja czy co?

Człowieku dałem Ci gotowca! Kod do ctrl+c i ctrl+v wystarczy w projekcie tylko wstawić timer z opóźnieniem a ty pytasz czy dam Ci gotowy kod...

to pytanie.. jak ustawiłeś timer komentarzem?

Opublikowano

...

Powiem prosto z serca: Nie zajmuj się tym... Kolekcjonuj znaczki czy coś w tym stylu ale nie zabieraj się za programowanie... Ba! To nawet programowanie nie jest! Ustawienie tego timera w Visual Studio (Basic) to kwestia zapoznania się ze stanowiskiem pracy i oprogramowaniem! No i jeżeli, niektórych to przerasta to umiejętność czytania niekiedy nawet po angielsku.

 

 

"to pytanie.. jak ustawiłeś timer komentarzem?"

I tutaj jak to przeczytałem coś we mnie pękło... Znasz znaczenie słowa komentarz? Ewentualnie co między tysiącami linijek skomplikowanego kodu robi komentarz?

 

Ludzie jak chcecie pomocy w tym przypadku z programowaniem to wypadałoby mieć chociaż deczko wiedzy na ten temat, a nie jak autor tematu kompletne 0 - Zakładam, że kolega tworzy launcher do minecrafta - Co w tym dziwnego? Nic bo launcherów powstaje teraz multum, GDYBY NIE TO, że kolega się nie zna kompletnie na niczym co mu jest potrzebne.

 

 

Ja już się tutaj udzielać nie będę, może inni użytkownicy wytłumaczą Ci jak za pomocą kodu, bądź wizualnie zmienić ustawienie timera.

Opublikowano

...

Powiem prosto z serca: Nie zajmuj się tym... Kolekcjonuj znaczki czy coś w tym stylu ale nie zabieraj się za programowanie... Ba! To nawet programowanie nie jest! Ustawienie tego timera w Visual Studio (Basic) to kwestia zapoznania się ze stanowiskiem pracy i oprogramowaniem! No i jeżeli, niektórych to przerasta to umiejętność czytania niekiedy nawet po angielsku.

 

 

"to pytanie.. jak ustawiłeś timer komentarzem?"

I tutaj jak to przeczytałem coś we mnie pękło... Znasz znaczenie słowa komentarz? Ewentualnie co między tysiącami linijek skomplikowanego kodu robi komentarz?

 

Ludzie jak chcecie pomocy w tym przypadku z programowaniem to wypadałoby mieć chociaż deczko wiedzy na ten temat, a nie jak autor tematu kompletne 0 - Zakładam, że kolega tworzy launcher do minecrafta - Co w tym dziwnego? Nic bo launcherów powstaje teraz multum, GDYBY NIE TO, że kolega się nie zna kompletnie na niczym co mu jest potrzebne.

 

 

Ja już się tutaj udzielać nie będę, może inni użytkownicy wytłumaczą Ci jak za pomocą kodu, bądź wizualnie zmienić ustawienie timera.

To było słowo drwiące z ciebie bo napisałeś "gotowy kod". A timer nie był ustawiony dlatego zapytałem gdzie masz ustawiony timer "w komentarzu"? Bo napisałeś tylko co mam zrobić.

I dla twojej informacji wiem co to jest komentarz.

 

 

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        'Tutaj dzieje się wszystko po ticku timera (5000ms)
        'Zatrzymujemy Timer aby się nie zapętlał
        Timer1.Stop()
        'Oraz wykonujemy resztę kodu
        ProgressBar1.Hide()
        Button4.Hide()
        Label2.Hide()
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'Po wciśnięciu buttona zmienia się tekst w label2
        Label2.Text = "Pobieranie anulowane"
        'Oraz uaktywnia się timer ustawiony na 5000ms
        Timer1.Enabled = True
        Timer1.Start()
    End Sub

Mowa o 5000ms i jakichkolwiek liczbach jest w komentarzu. Skąd mam wiedzieć jak ustawić timer?! - To nie jest gotowiec!

Opublikowano

-_-

Tak napisałem drwiąco sam z siebie a dając Ci kod i pisząc co masz zrobić nie dałem Ci gotowca.

 

Debili na tym świecie naprawdę nie brakuje więc nie ośmieszaj się dalej i radzę Ci skończyć zabawy z Visual Basic'iem

 

Podziwiam ludzi, którzy chcą programować i robić aplikacje a są na tyle głupi, że ciężko im zrozumieć tak prostą instrukcję jak ta, którą dałem Tobie! Ale ok mniejsza z tym, podziwiam ludzi, którzy zabierają się za coś takiego a nie znają nawet podstaw narzędzia, na którym pracują jakim u Ciebie na 100% jest po prostu Visual Studio. Kod dałem Ci ja (gotowca) i kod dali Ci koledzy, którzy pisali o uspaniu wątku, jeżeli dla Ciebie jest to "zawieszenie się programu" to znaczy, że nie znasz się kompletnie, zresztą napisali Ci abyś zrobił to w oddzielnym wątku.

Opublikowano

Kod nie był gotowy tak i koniec dyskusji.. Nie wiem co chcesz osiągnąć tą kłótnią w temacie.
Proszę o zamknięcie!

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...