Tam Versiyonu Görüntüle: hatayı bulamadım arkadaşlar please help me !!

silentkiller
21.09.2007, 22:08
Imports System.Data.OleDb
Public Class Form1
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim a As String
        a = MsgBox("Are Sure Want To Quit", MsgBoxStyle.OkCancel, "System Exit")
        If a = vbOK Then
            Me.Close()
        Else
        End If
    End Sub

    Public Sub Doldur()
        Dim baglanti As New OleDb.OleDbConnection
        baglanti.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\db.mdb"
        baglanti.Open()
        Dim kaynak As New OleDb.OleDbCommand
        kaynak.Connection = baglanti
        kaynak.CommandType = CommandType.Text
        kaynak.CommandText = "select * from users"
        Dim ad As New OleDb.OleDbDataAdapter
        Dim ds As New DataSet
        ad.SelectCommand = kaynak
        ad.Fill(ds, "users")
        DataGridView1.DataSource = ds.Tables("users")
        baglanti.Close()
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        BackgroundWorker1.RunWorkerAsync()

    End Sub

    Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
        Doldur() 'call doldur procedure
        BackgroundWorker1.ReportProgress(200)
        Threading.Thread.Sleep(500)
        BackgroundWorker1.ReportProgress(400)
        Threading.Thread.Sleep(500)
        BackgroundWorker1.ReportProgress(1000)
        'Threading.Thread.Sleep(500)
        'BackgroundWorker1.ReportProgress(800)
        'Threading.Thread.Sleep(500)
        'BackgroundWorker1.ReportProgress(1000)
    End Sub

    Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As System.Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
        ProgressBar1.Value = e.ProgressPercentage
    End Sub

    Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As System.Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
        MessageBox.Show("Giriş Onaylandı")
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ProgressBar1.Maximum = 1000
        Control.CheckForIllegalCrossThreadCalls = False
        BackgroundWorker1.WorkerReportsProgress = True
    End Sub
End Class

silentkiller
21.09.2007, 22:10
backgroundworker ile progressbar birlikte çalışıyo ve yüklüyor fakat yükleme sonun da progressbar %100 olunca program kasıyo ve işlemez hale geliyor ve dil hatada vermiyor

muratselim
22.09.2007, 11:57
acaba progress bar maximum sayıyımı asıyo.
report progress progress bar'a konumuna ekleme olabilir
bu durumda 3400 yüklemis olursun max 1000 olan progrese

ikinci bir olsalık kısır döngüye giriyo program hata vermiyo ve kasıyo(doldur)

üstelik senin progresi kullanısın garip geldi bana sen progress güncellemelerinin arasında sleep kullanıyosun bunun yerine progress güncellemesini doldur da yaptıgın islemlerin arasına mesala bir döngünün içine koyman lasım



silentkiller
23.09.2007, 02:31
backgroundworker'ın do work olayında son 4 satırın başında çentik var yani bir önceki satırda progress doluyor progress güncellemelerinin arasındaki sleepler farkındaysan 3 tane var progress 3 kere durakladıktan sonra yüzde 100 oluyor yani o durklamalar normal ben şöle düşündüm acaba tam veritabanı nı close ederken progressin %100 olması ve backgroudworkerın complete olması sonucu makina da bir kasma söz konusu olabilir mi dedim ama başka makinada da deneme fırsatım olmadı çözemedim

muratselim
24.09.2007, 01:07
bak makinanın nerde kasmaya basladıgını bulmanın iki yolu var. 1. yol degug programıyla takip edersin. (karışık ve biraz tecrübe gerekli)
ikinci yol programı adım adım takip edersin. mesala msg box la istediğin değişkenleri cıktı edersin. aynı zamanda programın nereye ulastıgını yada nereye hic gitmediğini görebilirsin.

ve tekrar ediyorum sen programındaki hatayı sleeplerle güncelleddiğin bir progresse bakarak anlayamazsın. program ın gidisi ve progress barın gidişi asenkronize yani birbirinden bagımsız. belkide senin progres birinci centikteyken sen programın doldur sub ı bitmis oluyor.
görmek için doldurun sonuna bir mesaj kutusu ekle.
ama başka bir açıdan oraya hiç gelmiyoda olabilir komutlardan biri kısır döngüye yol acıyodur bunu takip etmen lasım yukarda anlattığım gibi kolay gelsin...