PDA

View Full Version : سوال: غیرفعال کردن Enable Application Freamework در پنجره Project Properties (همراه عکس)



gilsoft
دوشنبه 29 آبان 1391, 20:47 عصر
سلام دوستان گلم

من بخاطر چک کردن و تنظیمات یه سری از متغیرها و ... قبل از بارگذاری فرم اصلی نرم افزارم .. باید برنامه رو از یه Sub Main شروع کنم :چشمک:

برای این کار مجبورم گزینه Enable Application Freamework از تب Application در Project Properties رو غیر فعال کنم (شماره 1 با رنگ قرمز در عکس زیر نشان داده شده) :لبخندساده:

95252

که در اینصورت گزینه Sub Main (شماره 2 با رنگ ماژنتا در عکس بالا نشان داده شده) در Startup Project نمایان میشود. :لبخندساده:

حالا سول من اینه که : اگه این گزینه رو غیرفعال کنم .. مشکل ( یا مشکلاتی ) در روند اجرای نرم افزارم بوجود نمیاد ؟ :متفکر:
چون برنامه ی من خیلی خیلی وایسته به Net Framework 3.5`4.0. هست !

gilsoft
چهارشنبه 08 آذر 1391, 17:04 عصر
سلام و احترام خدمت اساتید این تالار

کسی نمیتونه این سوال منو جواب بده ؟ :متفکر: :ناراحت: :افسرده: :گریه:

فرید نجفلو
پنج شنبه 09 آذر 1391, 12:29 عصر
سلام
شما نیازی به استفاده از اون روش ندارید!
فرم Startup رو به صورت معمولی تعیین کنید
از همون جایی که تصویرش رو دادین دکمه View Application Events رو (که تو تصویر غیر فعاله) بزنید
کدی رو که می خواید قبل از همه اجرا بشه رو تو رویداد MyApplication_Startup بنویسید

تو اون کلاس رویدادهای خیلی مفید دیگه ای هم وجود داره که چون خیلی مهم هستم مختصرا توضیح می دم:

MyApplication_NetworkAvailabilityChanged:
تغییر در اتصالات شبکه مثلا قطع یا وصل شدن شبکه محلی یا اینترنت (برای چک آپدیت هم کاربردیه)

MyApplication_Shutdown:
وقتی برنامه کارش تموم شده و داره بسته میشه (آخرین کدی که اجرا خواهد شد)
البته به شرطی که برنامه رو با Application.Exit یا بسته شدن فرم ها ببندید یعنی اگه با End برنامه بسته بشه این رویداد اتفاق نمی یوفته

MyApplication_StartupNextInstance:
وقتی تو تصویر ست اول گزینه Make Single Instance تیک نخورده باشه
وقتی یه نمونه دیگه از همین برنامه اجرا بشه این رویداد رخ می ده (تو نمونه ای که تازه باز شده یعنی دوم به بعد)

MyApplication_UnhandledException:
به نظر من این مفید ترین مورد بین اینهاست!
وقتی شما یه خطای (Exception) مدیریت نشده تو برنامه داشته باشید به طور معمولا ران تایم یه پنجره (کاملا غیر کاربر پسند) رو نشون می ده که ضعف برنامه رو به شدت نشون می ده
حالا قبل از این که اون پنجره نشون داده بشه این رویداد اتفاق میوفته که شما می تونید خطا رو مدیریت و در صورت لزوم پیغام خطای مناسب رو نشون بدید و از ظاهر شدن اون پنجره عمومی جلو گیری کنید

JaVa
شنبه 28 بهمن 1391, 23:20 عصر
MyApplication_UnhandledException:
به نظر من این مفید ترین مورد بین اینهاست!
وقتی شما یه خطای (Exception) مدیریت نشده تو برنامه داشته باشید به طور معمولا ران تایم یه پنجره (کاملا غیر کاربر پسند) رو نشون می ده که ضعف برنامه رو به شدت نشون می ده
حالا قبل از این که اون پنجره نشون داده بشه این رویداد اتفاق میوفته که شما می تونید خطا رو مدیریت و در صورت لزوم پیغام خطای مناسب رو نشون بدید و از ظاهر شدن اون پنجره عمومی جلو گیری کنید

آقا فرید یه دنیا ممون از توضیحاتی که فرمودید.

من در قسمتی که در پست اول مشخص شده دستورات زیر رو قرار دادم
(( View Application Events))
Imports DevComponents.DotNetBar

Namespace my

Partial Friend Class myapplication
Private Sub myapplication_UnhandledException(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.Unhandle dExceptionEventArgs) Handles Me.UnhandledException
Try

MessageBoxEx.EnableGlass = False
MessageBoxEx.Show(New Form() With {.TopMost = True, .StartPosition = FormStartPosition.CenterScreen}, "خطای جدی در اجرای برنامه!", "خطای بسیار جدی", MessageBoxButtons.OK, MessageBoxIcon.Warning)

e.ExitApplication = False

Catch ex As Exception
End Try
End Sub
End Class

End Namespace

اما دو تا مسئله که وجود داره اینه که قسمت My رو warnings یا اخطار میگه

و این موضوع که در صورت وجو خطا این پیام نشون داده نمیشه.
:متفکر:
یه کار جالبی که میشه این قسمت انجام داد اینه که متن خطا رو به یه ایمیلی ارسال کنه بعد پیشتیبان برنامه بیاد مسئله رو بررسی کنه.

چیز جالبی میشه.:متفکر:

تشکر

فرید نجفلو
یک شنبه 29 بهمن 1391, 01:58 صبح
سلام
همون طور که از متن هشدار هم معلومه مشکل Match Case داره یعنی My رو به صورت my (حرف اول کوچیک) نوشته شده
(حالا چرا تغییر دادی بماند!)


یه کار جالبی که میشه این قسمت انجام داد اینه که متن خطا رو به یه ایمیلی ارسال کنه بعد پیشتیبان برنامه بیاد مسئله رو بررسی کنه.
بله میشه اما ثبت لوکال هم مهمه (ایمیل مطمئن نیست چون ممکنه اینترنت نباشه )
در ضمن توجه کنید که خود این کد هم باعث بروز Exception نشه ، پس از Try ...Catch استفاده کنید

Private Sub MyApplication_UnhandledException(sender As Object, e As Microsoft.VisualBasic.ApplicationServices.Unhandle dExceptionEventArgs) Handles Me.UnhandledException
Try
Dim LogPath As String = My.Computer.FileSystem.SpecialDirectories.CurrentU serApplicationData
If Not IO.Directory.Exists(LogPath) Then IO.Directory.CreateDirectory(LogPath)

Dim lg As New Logging.FileLogTraceListener
lg.DiskSpaceExhaustedBehavior = Logging.DiskSpaceExhaustedOption.DiscardMessages
lg.Encoding = System.Text.Encoding.UTF8

lg.BaseFileName = "CriticalError"
lg.MaxFileSize = CLng(2 ^ 20 * 2) ' 2 Megabyte
lg.Location = Logging.LogFileLocation.Custom
lg.CustomLocation = LogPath
lg.WriteLine(Now.ToString)
lg.WriteLine(e.Exception.Message)
If e.Exception.InnerException IsNot Nothing Then
lg.WriteLine("Inner :")
lg.WriteLine(e.Exception.InnerException.Message)
End If
lg.WriteLine("Stack :")
lg.WriteLine(e.Exception.StackTrace)
lg.WriteLine(StrDup(50, "-"c))
lg.Close()
Catch
End Try

Try
Dim msg As String = ""
#If DEBUG Then
msg = e.Exception.Message
#End If
MsgBox("خطای جدی در اجرای برنامه!" & vbNewLine & msg, _
MsgBoxStyle.OkOnly Or MsgBoxStyle.Critical Or MsgBoxStyle.MsgBoxRtlReading Or _
MsgBoxStyle.MsgBoxRight, "خطای بسیار جدی")
e.ExitApplication = False
Catch
End Try

End Sub