vb6; اجرای هم زمان کدهای دو فرم مجزا؟؟؟

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

the_king

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

صد البته. ویژوال بیسیک بطور عادی همه فرمان ها را در یک نخ (Thread) اجرا می کند، به همین جهت اگر تابعی
در حال اجرا باشد، تابع دیگری بطور همزمان اجرا نخواهد شد. برای رفع این مشکل حداقل دو راه حل وجود دارد :

شیوه اول همروندی بجای همزمانی است، یعنی با استفاده از چندین کنترل همانند Timer فعالیت هایی همانند
خواندن یک فایل را بطور تکه تکه و در فواصل زمانی انجام داد. در این شیوه کد های تابع اصلی و کد های درون Timer
بطوری یک در میان اجرا می شوند که انگار همزمان اجرا شده اند. استفاده کردن از دستور DoEvents یکی از
اصلی ترین مواردی است که باید در میان کد ها انجام شود. DoEvents به عملیاتی که بایستی با همروندی اجرا شوند
فرصت اجرا را می دهد.

مثالی از این شیوه را ضمیمه این پست کردم.

شیوه دوم همزمانی حقیقی است، که بایستی با ایجاد کردن یک نخ (Thread) جدید و اضافه کردن اش به نخ اصلی
برنامه انجام شود. چون ویژوال بیسیک چنین موردی را در زبان خود پیش بینی نکرده، بایستی از توابع API ویندوز
کمک گرفت. انجام اینکار مشکل و پیچیده است، چون اغلب دستورات عادی ویژوال بیسیک برای دسترسی
در نخ های چند گانه آمادگی لازم را ندارند.
 

پیوست ها

  • Method 1.zip
    21.1 کیلوبایت · بازدیدها: 23

جدیدترین ارسال ها

بالا