h.ranjbar72
شنبه 29 تیر 1398, 10:16 صبح
سلام
من یه نرم افزار مدیریت و حسابداری رستوران نوشتم
سیستم کامل بر پایه MVC پیاده سازی شده و از Multi Threading استفاده شده
یه صف چاپ ایجاد کردم که به محض اینکه یه فاکتور ثبت میشه بلافاصله درخواست چاپ در کمتر از 1 ثانیه به چندین پرینتر(شامل صندوق - سالن - آشپزخانه و...) ارسال میشه که هر کدام از پرینترها هم تنظیمات خاص خودشان را دارند
روال پیاده سازی به این شکل هستش که پس از ثبت فاکتور تمام اطلاعات مورد نیاز چاپ اعم از : اطلاعات فاکتور، محصولات فاکتور، تنظیمات پرینتر در قالب جیسون در فیلدهای یک جدول به نام PrinterQueue ذخیره میشه.
برای ارسال پرینت به چاپگر در Program.cs در کد یه تایمر با Interval 600ms ایجاد کردم که روی یک Thread مستقل از MainForm داره اجرا میشه و مدام داره کوئری sql به جدول PrinterQueue میزنه، چک میکنه اگه رکوردی در جدول وجود داشته باشه بلافاصله اطلاعات رو میخونه و جیسون های ذخیره شده رو به کلاس های مربوطه CAST میکنه و میفرسته به تابع چاپ که نوشتم. البته این تابع چاپ static نیست و به ازای هر دستور چاپ یک شی از کلاس مورد نظر ساخته میشه و سپس توسط اون شی تابع چاپ اجرا میشه. در طراحی فایل چاپ هم از StimulSoftReport استفاده شده
الان چاپ در سریع ترین زمان ممکن داره اجرا میشه ولی مشکل کار اینجاست که بعد از 1 ساعت کار کردن نرم افزار cpu تا 95% میاد , Ram هم حدود 2 گیگ میرسه
اصلا متوجه نمیشم که مشکل کار کجاست!!!
کسی اگه بتونه راهنماییم کنه ممنون میشم
من یه نرم افزار مدیریت و حسابداری رستوران نوشتم
سیستم کامل بر پایه MVC پیاده سازی شده و از Multi Threading استفاده شده
یه صف چاپ ایجاد کردم که به محض اینکه یه فاکتور ثبت میشه بلافاصله درخواست چاپ در کمتر از 1 ثانیه به چندین پرینتر(شامل صندوق - سالن - آشپزخانه و...) ارسال میشه که هر کدام از پرینترها هم تنظیمات خاص خودشان را دارند
روال پیاده سازی به این شکل هستش که پس از ثبت فاکتور تمام اطلاعات مورد نیاز چاپ اعم از : اطلاعات فاکتور، محصولات فاکتور، تنظیمات پرینتر در قالب جیسون در فیلدهای یک جدول به نام PrinterQueue ذخیره میشه.
برای ارسال پرینت به چاپگر در Program.cs در کد یه تایمر با Interval 600ms ایجاد کردم که روی یک Thread مستقل از MainForm داره اجرا میشه و مدام داره کوئری sql به جدول PrinterQueue میزنه، چک میکنه اگه رکوردی در جدول وجود داشته باشه بلافاصله اطلاعات رو میخونه و جیسون های ذخیره شده رو به کلاس های مربوطه CAST میکنه و میفرسته به تابع چاپ که نوشتم. البته این تابع چاپ static نیست و به ازای هر دستور چاپ یک شی از کلاس مورد نظر ساخته میشه و سپس توسط اون شی تابع چاپ اجرا میشه. در طراحی فایل چاپ هم از StimulSoftReport استفاده شده
الان چاپ در سریع ترین زمان ممکن داره اجرا میشه ولی مشکل کار اینجاست که بعد از 1 ساعت کار کردن نرم افزار cpu تا 95% میاد , Ram هم حدود 2 گیگ میرسه
اصلا متوجه نمیشم که مشکل کار کجاست!!!
کسی اگه بتونه راهنماییم کنه ممنون میشم