Last updated on 05 Temmuz 2020
Bu ornegimizde, windows uygulamalarinda multi thread program gelistirmek icin kullanabilecegimiz backgroundworker kontrolunun kullanimina bakiyoruz.
Video: Background Worker Control
Last updated on 05 Temmuz 2020
Bu ornegimizde, windows uygulamalarinda multi thread program gelistirmek icin kullanabilecegimiz backgroundworker kontrolunun kullanimina bakiyoruz.
Video: Background Worker Control
Yorum yapabilmek için oturum açmalısınız.
Thread’leri ogrenmeye baslamistim ki bu control cikti karsima. Sizin videonuz sayesinde kullanimini kavradim. Tesekkurler.
Bir sorum olacak yanıtlarsanız çok sevinirim. Anlattıklarınızı yeni yeni öğrenmeey başlamıştm sayenizde iyice kavradım ancak önemli bir durum daha var ve işin içinden çıkamadım.Sorum Şu;
———————————————————
My.Computer.Network.UploadFile(TextBox1.Text, “Ftp://xxx:xxx@ftp.ceyhunkeklik.com/httpdocs/ftpdeneme/” & filename.ToString)
———————————————————
bu kodla büyük bir dosya upload ederken o anda ben;
———————————————————
Dim request As FtpWebRequest = FtpWebRequest.Create(“ftp://xxx:xxx@ftp.ceyhunkeklik.com/httpdocs/ftpdeneme/” & filename.ToString)
request.Method = WebRequestMethods.Ftp.GetFileSize
Dim datalenght
datalenght = request.GetResponse.ContentLength
ProgressBar1.Value = datalenght
———————————————————
bunu yapmak istiyorum. Ancak aynı anda çalışmıyorlar bunu nasıl başarabilirim…
Konuyla ilgili bi paylaşımım vardı faydası olur diye paylaşıyorum
F.W 3.5’ta bulunan BackgroundWorker sınıfı thread yönetimini kolaylaştırıyor. Genelde bununla ilgili örnekler verildiği zaman progress ile ilgili görüntüsünü göstermek için 1den 10a kadar döngüyü çalıştırıp örneklendiriyorlar. Gerçekte bize lazım olan reel ilerleme zamanıdır ya da reel durumdur. Bunu timer ile birlikte kullanınca reelliği yakalayabiliyoruz. Bununla ilgili çok basit kavraya bileceğimiz bir örneğimiz olacak.
Mesela Mernis Sorgusunu ele alalım. Mernis sorgusu bitenekadar
lblDurum label’i(Progressbar yerine label kullandım) üzeinde noktalar ilerleyecektir.
Sorgu sonuçlanınca da ilerleme duracaktır.
Gerekli Using’ler
using System;
using System.ComponentMod el;
using System.Windows;
using WpfApplication1. MernisService;
//Mernis Sorgusu için webservisini eklemek gerekiyor projeye
//bendeki webservisin adı MernisService’ dir.
#region Mernis
private BackgroundWorker _bgWorkerMernis;
private System.Timers.Timer _timer;
private void GetMernis()
{
_bgWorkerMernis = new BackgroundWorker();
_bgWorkerMernis. WorkerReportsPro gress = true;
_bgWorkerMernis. WorkerSupportsCa ncellation = true;
_bgWorkerMernis. DoWork += _bgWorkerMernis_ DoWork;
_bgWorkerMernis. RunWorkerComplet ed += _bgWorkerMernis_ RunWorkerCompleted;
_bgWorkerMernis. ProgressChanged += _bgWorkerMernis_ ProgressChanged;
lblDurum.Content = “Mernis Sorgusu Yaplyor “;
_bgWorkerMernis. RunWorkerAsync( 11111111111) ;//TcKimlikNo
}
void _timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
if (_bgWorkerMernis. IsBusy)
{
_bgWorkerMernis. ReportProgress( 0);
}
}
void _bgWorkerMernis_ DoWork(object sender, DoWorkEventArgs e)
{
_timer = new System.Timers.Timer(10);
_timer.Enabled = true;
_timer.Elapsed += new System.Timers.ElapsedEventHandler(_timer_Elapsed) ;
_timer.Start( );
MernisService.ServiceSoapClient service = new ServiceSoapClient();
e.Result = service.TCKimlikNoS orgula(0, “sifre”, Convert.ToInt64(e.Argument ));//argument Tc Kimlik No tutuyor
}
void _bgWorkerMernis_ ProgressChanged(object sender, ProgressChangedEven tArgs e)
{
lblDurum.Content += “.”;
}
void _bgWorkerMernis_ RunWorkerComplet ed(object sender, RunWorkerCompletedE ventArgs e)
{
_timer.Stop( );
string ad = ((MernisService.TCKimlikNoKisiBilgi) e.Result).Ad;
//…diğer bilgileri ilgili alanlara set etmek gerekiyor.
}
#endregion