درود دوستان
من یه خط کد دارم که میحوام فقط یکبار اجرا بشه البته توی تالار رو هم گشتم ولی چیزه خاصی دستگیرم نشد
ممنون از کمک دوستان
درود دوستان
من یه خط کد دارم که میحوام فقط یکبار اجرا بشه البته توی تالار رو هم گشتم ولی چیزه خاصی دستگیرم نشد
ممنون از کمک دوستان
سلام
دوست عزیز،سوالتون خعلی گنگه!یعنی چی یکبار اجرا بشه؟؟؟؟؟مگه کدهای ی برنامه چندبار اجرا میشن؟!!
دقیق تر توضیح بدین خواهشن...
مهندس من تو فرم لودم یه کد دارم که میخوام از این کد یه قسمتش فقط یکبار اجرا بشه (فرم ممکنه چندین بار لود بشه)
خب ی متغیر boolتعریف کنید،حالا اون تیکه کد رو داخل یک if بزارین که اون متغییرو چک کنه،اگر true بود کد اجرا میشه،بعد کد خودتون هم
(داخل if) مقدار متغیر رو false کنید.
کلاس های Singleton: کلاسی هایی هستند که فقط یک نمونه از آنها در سرتاسر برنامه وجود دارد؟
آیا چنین موردی بکار شما می آید؟
راهکار دیگری هم وجود دارد که پیاده سازی ساده تری دارد. متغیرهای استاتیک مربوط به نوع هستند نه شی. همچنین میدانیم که این نوع متغیر ها یک نمونه بیشتر ندارند(از هز نوع یا کلاس فقط یکی وجود دارد ولی اشیاء بی نهایت میتوانند داشته باشند) و در تمام اشیاء قابل دسترسی هم هستند.
پس باید یک متغیر static در کلاس(فرم) مد نظر قرار بدین که اگه مثلاً false بود توی فرم لود چک بشه و کدهای لود اجرا بشن و در پایان لود اطلاعات این متغیر باید مقدار نقیض(true) بگیرد تا در دفعات بعدی مانع اجرا بشه. در حقیقت این متغیر یک پرچم خواهد بود برای اجازه اجرای دستورات:
private static bool _is_loaded= false;
private void formN_load(object sender, EventArgs e)
{
if(!_is_loaded)
{
label1.Text="";
.
.
_is_loaded= true
}
}
ایول مهندس چه پیشنهاد جالبی از رمیکس و احسان عزیز کمال تشکر رو دارم
دوستان متاسفانه هر بار که فرم لود میشه کد اجرا میشه.....!
فرمتون رو چطوری لود میکنین؟! مصلن فرم بسته میشه و دوباره بازش میکنید؟
متغیر رو سراسری تعریف کنید باید درست شه.
راهی که دوستان گفتن واسه رویداد دکمه جواب میده ولی واسه فرم لود نه...
هر بار که فرم بسته بشه همه ی متغیر ها حذف میشن!
راه حل کار شما:
در فرم لود چک میکنی فایلی به نام مثلا tst.txt در کنار برنامه وجود داره یا نه
اگه فایل وجود نداشت :
برنامه تا حالا اجرا نشده. پس فایل رو میسازی
اگه فایل وجود داشت:
برنامه حداقل یه بار اجرا شده.
سلام هر چند روش دوست گرامی RmeXXXXXXXXX کاملا درسته اما اگه کار نکرد ار یک کلاس Static استفاده کن
public static class MyClass
{
public static _is_loaded= false;
}
.
.
.
.
private void formN_load(object sender, EventArgs e)
{
if(!MyClass._is_loaded)
{
label1.Text="";
.
.
MyClass._is_loaded= true
}
}
سلام
خیر دوست گرامی لطفا کلاس ها و اشیا Static رو مطالعه بفرمایید
متغیر با کلاس حافظه استاتیک در طول اجرای برنامه فقط یک بار مقدار میگیره.
ولی حواستون باشه درسته که کلاس حافظه استاتیکه ولی متغیره یعنی اگه برنامه بسته شد این از بین میره و با اجرای دوباره ی برنامه ادرس این متغیر دیگه ادرس قبلی نیست! یعنی مقدارش عوض میشه طبق مقدار دهی اولیه که کردین دوباره مقدار میگیره!
ولی فایل اینجوری نیست. شما صد بار هم که کامپیوتر رو ری استارت کنی هنوزم توی حافظه هست و از بین نمیره.
البته واسه کار ایشون ریجیستری هم جواب میداد ولی یذره پیچیده تر میشد ...
سلام دوست گرامی
خواسته titipop1 اینه : مهندس من تو فرم لودم یه کد دارم که میخوام از این کد یه قسمتش فقط یکبار اجرا بشه (فرم ممکنه چندین بار لود بشه)
اگه منظور فقط یه بار اجرا در اولین لود برنامه پس از نصب برنامه هستش حق با شماست باید درفایل نوشته بشه
آخرین ویرایش به وسیله alireza264 : دوشنبه 08 تیر 1394 در 03:26 صبح