نمایش نتایج 1 تا 13 از 13

نام تاپیک: مختصری درباره BackgroundWorker

  1. #1
    کاربر دائمی
    تاریخ عضویت
    آذر 1385
    محل زندگی
    قلب دوستان
    پست
    191

    Tick مختصری درباره BackgroundWorker

    سلام به همه دوستان و اساتید با اخلاق و عرض تسلیت به مناسبت ایام سوگواری فرزند یاس دلخون
    لازم شد در پروژه ایی از کلاس thread استفاده کنم که به یاد کنترل BackgroundWorkerافتادم. درMSDN مستنداتی برای کار با این کنترل بود که چون در GOOGLE مطلب ترجمه شده ای پیدا نکردم در این تاپیک مطالب زیر را جهت سهولت کار علاقه مندان قرار میدهم. از مطالب و تجربیات و اصلاحات دیگر دوستان پیشاپیش تشکر میکنم.
    BackgroundWorker محسوس تر و بصری تر کردن کلاس thread است.یک پروسه زمان بر را به آن میدهیم و BackgroundWorker آن را اصطلاحا در پشت (رابط کاربری و کاربر شما) تا پایان انجام میدهد در حالی که کاربر میتواند در طول این مدت پروسهای دیگر خود را انجام دهد.

    BackgroundWorker1.RunWorkerAsync(100): این متد رویداد DoWork را صدا میزند پارامتر آن اختیاری و از نوع object است که در رویداد DoWork توسط متد e.Argument قابل بازیابی است.


    BackgroundWorker1.DoWork: کدهای مربوط به پروسه خود را (مثل لود تعداد زیادی رکورد) در این رویداد قراردهید.


    BackgroundWorker1.RunWorkerCompleted: وقتی کل پروسه پایان پذیرفت این رویداد صدا زده میشود.

    backgroundWorker1.IsBusy: مادامیکه پروسه در حال انجام است و رویداد RunWorkerCompleted صدا زده نشده این خصوصیت مقدار True دارد


    BackgroundWorker.ReportProgress(int32): برای استفاده از این متد ابتدا خصوصیت WorkerReportsProgress رابرابر true قراردهید.
    این متد رویداد BackgroundWorker.ProgressChanged را صدا میزند و پارامتر خود را در متد e. ProgressPercentage رویداد فوق تحویل میدهد.


    BackgroundWorker.ProgressChanged: به راحتی میتوانید در این رویداد پروگرس بار خود را مقداردهی کنید. و کاربر را از روند کار آگاه کنید.


    BackgroundWorker.CancelAsync: برای استفاده از این متد ابتدا خصوصیت WorkerSupportsCancellation رابرابر true قراردهید.
    این متد باعث کنسل شدن کل پروسه میشود. و خصوصیت BackgroundWorker.CancellationPending را True میکند البته مشخص است که خروجی پروسه تا فراخوانی این متد در اختیار کاربر است.


    BackgroundWorker.CancellationPending: بهتر است در طول پروسه مقدار این خصوصیت مرتبا چک شود.

    اگر احتیاج به پروژه راهنما هست اعلام کنید تا قرار دهم.
    با تشکر شاد و شاد آفرین باشید.

  2. #2
    کاربر دائمی آواتار Sub Zero
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    اهواز
    پست
    443
    کارتون عالی بود اگه بتونید کار با کامپیوننتهای ناشناخته دیگه رو هم توضیح بدید عالی می شه مثل کار با Directory Searcher یا File System Watcher

  3. #3
    کاربر دائمی آواتار programmermp
    تاریخ عضویت
    اردیبهشت 1384
    محل زندگی
    Green Territory of North
    پست
    732

    Talking

    نقل قول نوشته شده توسط Sub Zero مشاهده تاپیک
    کارتون عالی بود اگه بتونید کار با کامپیوننتهای ناشناخته دیگه رو هم توضیح بدید عالی می شه مثل کار با Directory Searcher یا File System Watcher
    سلام مصطفی جان

    اول بگم که اگه این تاپیک در بخش تاپیکهای مهم عنوان می شد بهتر بود ولی بازم دست اقای

    manistak بابت مطلب خوبشون درد نکنه

    من در اینجا توضیح کامپوننت file system watcher رو شروع می کنم دیگه اگه شد اون یکی

    رو هم می گم نشد باشه واسه دیگر دوستان

    این کامپوننت همونطور که خودتون می دونید و از اسمش پیداست کار مانیتورینگ رو بر روی

    فایلها و اتفاقاتی که در دایرکتوری ها رخ می ده انجام می ده یک توضیح مختصر و بقیش

    در این جا می زارم

    مطلب زیر برای اشنایی با این کامپوننت هست من در اینجا یک عذر خواهی بکنم چون فرصت

    ترجمه ندارم بنابراین ترجمه اون رو به عهده خودتون می زارم (خداییش خیلی زیاد بود مطالب)



    You use the

  4. #4
    کاربر دائمی آواتار programmermp
    تاریخ عضویت
    اردیبهشت 1384
    محل زندگی
    Green Territory of North
    پست
    732

    Talking

    مطلب زیر برای استفاده از این کامپوننت هست


    Dim myWatcher As New System.IO.FileSystemWatcher()

    پیگربندی این کامپوننت


    Dim MyWatcher As New System.IO.FileSystemWatcher()MyWatcher.Path = "c:\"
    تنظیمات مربوط به کامپوننت هست
    ' This needs to be declared in a place where it will not go out of scope.' For example, it would be a class variable in a form class.Dim MyWatcher As New System.IO.FileSystemWatcher()' This code would go in one of the initialization methods of the class.MyWatcher.Path = "c:\"' Watch only for changes to *.txt files.MyWatcher.Filter = "*.txt"MyWatcher.IncludeSubdirectories = False' Filter for Last Write changes.MyWatcher.NotifyFilter = System.IO.NotifyFilters.LastWrite' Example of watching more than one type of change.MyWatcher.NotifyFilter = _   System.IO.NotifyFilters.LastAccess Or System.IO.NotifyFilters.Size' Enable the component to begin watching for changes.MyWatcher.EnableRaisingEvents = True
    در ضمن من یک عذرخواهی هم به شما بدهکارم اونم برای مشکل با این ادیتوره سایت که هر کاری کردم مطالب رو نمی انداخت توی پست سعی می کنم برنامه رو بزارم تا جبران این قضیه بشه

  5. #5
    کاربر دائمی آواتار programmermp
    تاریخ عضویت
    اردیبهشت 1384
    محل زندگی
    Green Territory of North
    پست
    732

    Talking

    این هم یک مثال دیگه برای کلاس فایل واچر که بررسی می کنه ایا فایلی ایجا د شده

    یا تغییر پیدا کرده یا نه البته در یک دایرکتوری



    Imports System.Diagnostics
    Imports System.IO
    Public Class Watcher
    Public Shared Sub Main()
    Run()
    End Sub
    '<PermissionSet(SecurityAction.Demand, Name:="FullTrust")> _
    Private Shared Sub Run()
    Dim args() As String = System.Environment.GetCommandLineArgs()
    ' If a directory is not specified, exit the program.
    If args.Length <> 2 Then
    ' Display the proper way to call the program.
    Console.WriteLine("Usage: Watcher.exe (directory)")
    Return
    End If
    ' Create a new FileSystemWatcher and set its properties.
    Dim watcher As New FileSystemWatcher()
    watcher.Path = args(1)
    ' Watch for changes in LastAccess and LastWrite times, and
    ' the renaming of files or directories.
    watcher.NotifyFilter = (NotifyFilters.LastAccess Or NotifyFilters.LastWrite Or NotifyFilters.FileName Or NotifyFilters.DirectoryName)
    ' Only watch text files.
    watcher.Filter = "*.txt"
    ' Add event handlers.
    AddHandler watcher.Changed, AddressOf OnChanged
    AddHandler watcher.Created, AddressOf OnChanged
    AddHandler watcher.Deleted, AddressOf OnChanged
    AddHandler watcher.Renamed, AddressOf OnRenamed
    ' Begin watching.
    watcher.EnableRaisingEvents = True
    ' Wait for the user to quit the program.
    Console.WriteLine("Press 'q' to quit the sample.")
    While Chr(Console.Read()) <> "q"c
    End While
    End Sub
    ' Define the event handlers.
    Private Shared Sub OnChanged(ByVal source As Object, ByVal e As FileSystemEventArgs)
    ' Specify what is done when a file is changed, created, or deleted.
    Console.WriteLine("File: " & e.FullPath & " " & e.ChangeType)
    End Sub
    Private Shared Sub OnRenamed(ByVal source As Object, ByVal e As RenamedEventArgs)
    ' Specify what is done when a file is renamed.
    Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath)
    End Sub
    End Class



    طبق گفته ام اس دی ان بیشتر بدرد مانیتورینگ فایل ها و فولدر ها توی شبکه

    می خوره فکر کنم همینطور هم بنظر بیاد
    آخرین ویرایش به وسیله programmermp : پنج شنبه 05 بهمن 1385 در 16:53 عصر دلیل: Forget Some Texts

  6. #6
    کاربر دائمی آواتار programmermp
    تاریخ عضویت
    اردیبهشت 1384
    محل زندگی
    Green Territory of North
    پست
    732

    Talking

    در ضمن مصطفی جان

    من یک سئوال در راستای مثال های فوق داشتم

    من توی فرم دستور زیر رو می نویسم ولی اصلا پنجره کنسول باز نمی شه مشکل چیه


    console.write("afadasdasd")

  7. #7
    کاربر دائمی آواتار Sub Zero
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    اهواز
    پست
    443
    نقل قول نوشته شده توسط programmermp مشاهده تاپیک
    در ضمن مصطفی جان
    من توی فرم دستور زیر رو می نویسم ولی اصلا پنجره کنسول باز نمی شه مشکل چیه

    console.write("afadasdasd")
    سورس Console Application رو نگاه کن تاپیک Vb 2005 Tips پست شماره 29

  8. #8
    نقل قول نوشته شده توسط manitack مشاهده تاپیک

    BackgroundWorker.CancelAsync: برای استفاده از این متد ابتدا خصوصیت WorkerSupportsCancellation رابرابر true قراردهید.
    این متد باعث کنسل شدن کل پروسه میشود. و خصوصیت BackgroundWorker.CancellationPending را True میکند البته مشخص است که خروجی پروسه تا فراخوانی این متد در اختیار کاربر است.


    BackgroundWorker.CancellationPending: بهتر است در طول پروسه مقدار این خصوصیت مرتبا چک شود.

    با تشکر شاد و شاد آفرین باشید.
    میشه لطف کنید این دو مورد را بیشتر توضیح بدین
    مثلا منظورتون از اینکه خروجی پروسه تا فراخوانی این متد در اختیار کاربره چیه

  9. #9
    یه مشکل دیگه:
    من توی رویداد BackgroundWorker1.DoWork به یک combobox دسترسی پیدا می کنم که خطای زیر را می ده:

    Cross-thread operation not valid: Control 'vilageComboBox' accessed from a thread other than the thread it was created on.

  10. #10
    کاربر جدید آواتار moallemi
    تاریخ عضویت
    مهر 1385
    محل زندگی
    تهران - اصفهان
    پست
    23
    نقل قول نوشته شده توسط HAIdle مشاهده تاپیک
    یه مشکل دیگه:
    من توی رویداد BackgroundWorker1.DoWork به یک combobox دسترسی پیدا می کنم که خطای زیر را می ده:

    Cross-thread operation not valid: Control 'vilageComboBox' accessed from a thread other than the thread it was created on.
    برای حل این مشکل باید از دستور Controls.CheckForIlligal... استفاده کنی و مقدارش رو false کنی

  11. #11

    نفهمیدم

    نقل قول نوشته شده توسط moallemi مشاهده تاپیک
    برای حل این مشکل باید از دستور Controls.CheckForIlligal... استفاده کنی و مقدارش رو false کنی
    من هم این مشکل رو دارم یه کم بیشتر توضیح بدین

  12. #12
    برای حل این مشکل باید از دستور Controls.CheckForIlligal... استفاده کنی و مقدارش رو false کنی
    یه کم بیشتر توضیح بده

  13. #13
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491
    برای حل این مشکل باید از دستور Controls.CheckForIlligal... استفاده کنی و مقدارش رو false کنی
    این کار صورت نگیره بهتره... برای استفاده صحیح از این کلاس بهتره به راهنمای پست اول عمل کنید.
    و برای اینکه چنین اروری (مشکلی) پیش نیاد، زمانی که میخواید تغییری در کنترلهای فرم ایجاد کنید، از رویداد BackgroundWorker.ProgressChanged استفاده کنید.

تاپیک های مشابه

  1. مشکل با backgroundworker
    نوشته شده توسط Mrs.Net در بخش C#‎‎
    پاسخ: 9
    آخرین پست: چهارشنبه 18 مهر 1386, 04:47 صبح
  2. backgroundworker
    نوشته شده توسط f_iut79 در بخش VB.NET
    پاسخ: 7
    آخرین پست: پنج شنبه 07 تیر 1386, 16:12 عصر
  3. پاسخ: 3
    آخرین پست: شنبه 15 اردیبهشت 1386, 08:18 صبح
  4. کار با BackGroundWorker
    نوشته شده توسط bahman.net در بخش C#‎‎
    پاسخ: 4
    آخرین پست: جمعه 16 تیر 1385, 22:51 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •