初期処理・終了処理スケルトン


  ApplicationEvents.vb による開始・終了

  

Namespace My

	Partial Friend Class MyApplication

		Private Sub MyApplication_Startup(ByVal sender As Object, _
		ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs _
		) Handles Me.Startup

			' アプリケーションレベルの初期化

		End Sub

		Private Sub MyApplication_Shutdown(ByVal sender As Object, _
		ByVal e As System.EventArgs) Handles Me.Shutdown

			' アプリケーションレベルの最終処理

		End Sub

	End Class

End Namespace
  

※ 関連ページ

  スレッド処理付き、雛型




  

Imports System.Threading

Public Class Form1

	' スレッドの終了をコントロールするフラグ
	Private stopFlg As Integer = 0

	' ************************************************************
	' ロード前の初期処理 (1)
	' ************************************************************
	Sub New()

		' この呼び出しは、Windows フォーム デザイナで必要です。
		InitializeComponent()

	End Sub

	' ************************************************************
	' コントロール作成時
	' ************************************************************
	Protected Overrides Sub OnCreateControl()

		' (2)

		' この処理を実行中に、Load イベントが発生します
		MyBase.OnCreateControl()

		' (4)

	End Sub

	' ************************************************************
	' 初期処理 (3)
	' ************************************************************
	Private Sub Form1_Load(ByVal sender As System.Object, _
	ByVal e As System.EventArgs) Handles MyBase.Load

		' スレッド処理するメソッドを作成
		Dim ThreadProc As New Thread(AddressOf ThreadEntry)
		' スレッド開始
		ThreadProc.Start()

	End Sub

	' ************************************************************
	' フォーム表示後の初期処理 (5)
	' ************************************************************
	Private Sub Form1_Shown(ByVal sender As System.Object, _
	ByVal e As System.EventArgs) Handles MyBase.Shown

	End Sub

	' ************************************************************
	' スレッドの入り口
	' ************************************************************
	Private Sub ThreadEntry()

		Dim Bridge As New ProcBridge(AddressOf SetData)

		' 参照する為に、常に 0 で比較後等しければ 0 をセット。1 の時にループ終了
		Do While Interlocked.CompareExchange(stopFlg, 0, 0) = 0

			Thread.Sleep(1000)

			Console.WriteLine(Now)

			Me.Invoke(Bridge, New Object() {1, Now.ToString()})

		Loop

		' 実際の終了を通知する
		Me.Invoke(Bridge, New Object() {-1, "終了処理中です..."})

	End Sub

	' ************************************************************
	' 橋渡し用デリゲート
	' ************************************************************
	Delegate Sub ProcBridge(ByVal type As Integer, ByVal str As String)

	' ************************************************************
	' 橋渡し用実体
	' ************************************************************
	Private Sub SetData(ByVal type As Integer, ByVal str As String)

		If type = 1 Then
			Me.TextBox1.Text = str
		End If
		If type = -1 Then
			Me.TextBox2.Text = str
			' 強制描画
			Me.TextBox2.Update()
			Thread.Sleep(1000)
			' 終了通知うけて、実際終了する
			' ( FormClosing と FormClosed が発生する )
			Application.Exit()
		End If

	End Sub


	' ************************************************************
	' フォームが閉じる前( e.Cancel = True でキャンセル可能 )
	' ************************************************************
	Private Sub Form1_FormClosing(ByVal sender As System.Object, _
	ByVal e As System.Windows.Forms.FormClosingEventArgs) _
	Handles MyBase.FormClosing

		' スレッド実行中ならば、スレッドが終了する状態にして、終了処理をキャンセル
		If Interlocked.CompareExchange(stopFlg, 0, 0) = 0 Then
			Interlocked.Exchange(stopFlg, 1)
			e.Cancel = True
		End If

	End Sub

	' ************************************************************
	' フォームが閉じた後
	' ************************************************************
	Private Sub Form1_FormClosed(ByVal sender As System.Object, _
	ByVal e As System.Windows.Forms.FormClosedEventArgs) _
	Handles MyBase.FormClosed


	End Sub
End Class
  




yahoo  google  MSDN  MSDN(us)  WinFAQ  Win Howto  tohoho  ie_DHTML  vector  wdic  辞書  天気 


[dnettool]
claudebot
24/03/29 04:04:04
InfoBoard Version 1.00 : Language=Perl

1 BatchHelper COMprog CommonSpec Cprog CprogBase CprogSAMPLE CprogSTD CprogSTD2 CprogWinsock Cygwin GameScript HTML HTMLcss InstallShield InstallShieldFunc JScript JScriptSAMPLE Jsfuncs LLINK OldProg OracleGold OracleSilver PRO PRObrowser PROc PROconePOINT PROcontrol PROftpclient PROjscript PROmailer PROperl PROperlCHAT PROphp PROphpLesson PROphpLesson2 PROphpLesson3 PROphpfunction PROphpfunctionArray PROphpfunctionMisc PROphpfunctionString PROsql PROvb PROvbFunction PROvbString PROvbdbmtn PROvbonepoint PROwebapp PROwin1POINT PROwinSYSTEM PROwinYOROZU PROwindows ProjectBoard RealPHP ScriptAPP ScriptMaster VBRealtime Vsfuncs a1root access accreq adsi ajax amazon argus asp aspSample aspVarious aspdotnet aw2kinst cappvariety centura ckeyword classStyle cmaterial cmbin cmdbapp cmenum cmlang cmlistbox cmstd cmstdseed cmtxt cs daz3d db dbCommon dbaccess dnettool dos download flex2 flex3 flex4 framemtn framereq freeWorld freesoft gimp ginpro giodownload google hdml home hta htmlDom ie9svg install java javaSwing javascript jetsql jquery jsp jspTest jspVarious lightbox listasp listmsapi listmsie listmsiis listmsnt listmspatch listmsscript listmsvb listmsvc memo ms msde mysql netbeans oraPlsql oracle oracleWiper oraclehelper orafunc other panoramio pear perl personal pgdojo pgdojo_cal pgdojo_holiday pgdojo_idx pgdojo_ref pgdojo_req php phpVarious phpguide plsql postgres ps r205 realC realwebapp regex rgaki ruby rule sboard sc scprint scquest sdb sdbquest seesaa setup sh_Imagick sh_canvas sh_dotnet sh_google sh_tool sh_web shadowbox shgm shjquery shvbs shweb sjscript skadai skywalker smalltech sperl sqlq src systemdoc tcpip tegaki three toolbox twitter typeface usb useXML vb vbdb vbsfunc vbsguide vbsrc vpc wcsignup webanymind webappgen webclass webparts webtool webwsh win8 winofsql wmi work wp youtube