View Full Version : سوال: غیرفعال کردن  Enable Application Freamework در پنجره  Project Properties (همراه عکس)
  
gilsoft
دوشنبه 29 آبان 1391, 21: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, 18:04 عصر
سلام و احترام خدمت اساتید این تالار
کسی نمیتونه این سوال منو جواب بده ؟  :متفکر:   :ناراحت:   :افسرده:   :گریه:
فرید نجفلو
پنج شنبه 09 آذر 1391, 13:29 عصر
سلام
شما نیازی به استفاده از اون روش ندارید!
فرم Startup رو به صورت معمولی تعیین کنید
از همون جایی که تصویرش رو دادین دکمه View Application Events رو (که تو تصویر غیر فعاله) بزنید
کدی رو که می خواید قبل از همه اجرا بشه رو تو رویداد  MyApplication_Startup بنویسید
تو اون کلاس رویدادهای خیلی مفید دیگه ای هم وجود داره که چون خیلی مهم هستم مختصرا توضیح می دم:
MyApplication_NetworkAvailabilityChanged:
تغییر در اتصالات شبکه مثلا قطع یا وصل شدن شبکه محلی یا اینترنت (برای چک آپدیت هم کاربردیه)
MyApplication_Shutdown:
وقتی برنامه کارش تموم شده و داره بسته میشه (آخرین کدی که اجرا خواهد شد)
البته به شرطی که برنامه رو با Application.Exit یا بسته شدن فرم ها ببندید یعنی اگه با End برنامه بسته بشه این رویداد اتفاق نمی یوفته
MyApplication_StartupNextInstance:
وقتی تو تصویر ست اول گزینه Make Single Instance تیک نخورده باشه
وقتی یه نمونه دیگه  از همین برنامه اجرا بشه این رویداد رخ می ده (تو نمونه ای که تازه باز شده یعنی دوم به بعد)
MyApplication_UnhandledException:
به نظر من این مفید ترین مورد بین اینهاست!
وقتی شما یه خطای (Exception) مدیریت نشده تو برنامه داشته باشید به طور معمولا ران تایم یه پنجره (کاملا غیر کاربر پسند) رو نشون می ده که ضعف برنامه رو به شدت نشون می ده
حالا قبل از این که اون پنجره نشون داده بشه این رویداد اتفاق میوفته که شما می تونید خطا رو مدیریت و در صورت لزوم پیغام خطای مناسب رو نشون بدید و از ظاهر شدن اون پنجره عمومی جلو گیری کنید
JaVa
یک شنبه 29 بهمن 1391, 00: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, 02: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
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.