C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 >>
■1708  BackgroundWorker使用時のイベント通知
□投稿者/ nispa -(2007/03/03(Sat) 19:39:36)

    分類:[VB.NET (Windows)] 

    VB2005 ExpressをWinXP SP2上で使用しています。

    BackgroundWorkerを使って別スレッドで装置から温度取得し、
    フォーム(MainMenu)にイベントで通知したいのですが、
    イベントを受けたフォーム側で例外(InvalidOperationException)が発生してしまいます。

    別スレッドからフォーム(のコントロール)にアクセスするにはどのようにしたらいいのでしょう?
    ご教授願います。以下、長いですがソースです。

    Public Class MainClass
    Public Shared Sub Main()
    Dim observer As TempObserver
    observer = TempObserver.GetInstance
    observer.StartObserve() '温度取得開始

    Dim frm As New MainMenu
    frm.ShowDialog()
    End Sub
    End Class

    '温度を表示するフォーム
    Public Class MainMenu
    Private Sub MainMenu_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim observer As TempObserver = TempObserver.GetInstance

    AddHandler observer.TemparatureChange, AddressOf TemparatureChange
    End Sub

    'TempObserverのTemparatureChangeイベントを受ける
    Private Sub TemparatureChange(ByVal temparature)
    Me.lblTemparature.Text = Format(temparature, "0.0") & "℃" 'この行で例外発生(InvalidOperationException)

    End Sub
    End Class

    '装置から温度取得するクラス
    Public Class TempObserver
    Private temparature As Double '温度
    Private worker As System.ComponentModel.BackgroundWorker '使用するBackgroundWorker
    Private Shared instance As TempObserver 'このクラスのインスタンス

    Public Event TemparatureChange(ByVal temparature) '温度変化の通知イベント

    Public Shared Function GetInstance() As TempObserver
    If (instance Is Nothing) Then
    instance = New TempObserver
    End If
    Return instance
    End Function

    'SingletonにしたいのでPrivate
    Private Sub New()
    temparature = 0
    worker = New System.ComponentModel.BackgroundWorker
    worker.WorkerSupportsCancellation = True 'キャンセル処理を受け付けるように設定
    AddHandler worker.DoWork, AddressOf ObserveTemparature 'DoWorkイベントをObserveTemparatureに関連付ける
    AddHandler worker.RunWorkerCompleted, AddressOf CallBack 'RunWorkerCompletedイベントをCallBackに関連付ける
    End Sub

    '温度監視を開始する
    Public Sub StartObserve()
    If (worker.IsBusy = False) Then
    worker.RunWorkerAsync()
    End If
    End Sub

    '温度を観測する(BackgroundWorkerのDoworkイベント)
    Private Sub ObserveTemparature(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs)
    System.Threading.Thread.Sleep(1000)

    '(温度取得処理)
    'temparatureに温度が代入される
    End Sub

    'BackgroundWorkerのCompleteEvent(温度を通知する)
    Protected Sub CallBack(ByVal sender As System.Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs)
    RaiseEvent TemparatureChange(temparature)
    Call StartObserve()
    End Sub
    End Class
親記事 /過去ログ10より / 関連記事表示
削除チェック/

■47744  Graphicsを返すコード教えてください。。
□投稿者/ lavender -(2010/03/12(Fri) 20:03:57)

    分類:[VB.NET/VB2005 以降] 

    初めて投稿させて頂きます。初心者です。
    意味不明な言葉がありましたら申し訳ありません、ご容赦願います。。。

    現在仕事でVB5.0をvb2008の移行作業をしており、5.0のプログラムそこら中にobjectでLineやらStringが描画されています。
    そこでGraphicsをFunctionで返してあげれば、その場で描画出来ると安易に考えていたのですが...。
    今現在のコードが下の状態です。

    Public oj as Object 'ojがPictureBoxの場合とPrintDocmentがありえます。


    Dim G as Graphics = AutoGra(oj)←問題のファンクションです。
    G.Draw〜

    Public Function AutoGra(ByVal oj As Object) As Graphics
    If TypeOf oj Is PictureBox Then
    Dim Pic As PictureBox = oj
    If Pic.Image Is Nothing Then oj.Image = New Bitmap(Pic.Width, Pic.Height)
    Return Graphics.FromImage(Pic.Image)
    ElseIf TypeOf oj Is Printing.PrintDocument Then
    Return ←@
    End If
    End Function

    @の場所でPrintPageEventArgsのe.Graphicsを返したいのですが中々うまく出来ません。
    そもそもこんなやり方ではダメなのでしょうか?
    ojがPictureBoxの場合は問題ありません。
    教えて頂けたら嬉しいです、宜しくお願いいたします。
親記事 /過去ログ81より / 関連記事表示
削除チェック/

■75670  Re[9]: Invoke関係の理解
□投稿者/ kiku -(2015/04/21(Tue) 13:50:37)
    > 質問されているのはkikuさんであり、daiveさんは質問方法に対する助言を
    > しただけなのでは?『ご質問』は通常回答者がするものではありません。

    確かにそうですね。
    daiveさん、shuさん大変失礼いたしました。
    m(_ _)m
記事No.75647 のレス /過去ログ127より / 関連記事表示
削除チェック/

■91837  Re[1]: DataGridViewを利用したログイン画面の作成
□投稿者/ WebSurfer -(2019/08/07(Wed) 10:16:55)
    No91825 (逃避行動 さん) に返信

    Windows Forms アプリで Oracle DB にあるユーザー情報でユーザー認証・承認をする、さらに
    DataGridView を使うというのが自分的には理解不能で、見当違いのことをされているような気
    もしますが・・・

    ASP.NET の Membership オブジェクトと Roles オブジェクトを Windows Forms アプリケーシ
    ョンでも利用できますので、それを考えてみてはいかがですか? 具体的には以下の記事を見
    てください。

    Windows Forms アプリで Membership を利用
    http://surferonwww.info/BlogEngine/post/2014/02/11/aspnet-membership-and-roles-objects-usable-in-windows-forms-application.aspx

    上記はユーザー情報のストアには SQL Server を利用していますが、MemberShip / Role プロ
    バイダを Oracle に合わせてカスタム実装すれば同じことができるはずです。

    とりあえず、まずすべて .NET Framework に用意されている SQL Server 用のプロバイダで実装
    してみて、それが使えるようなら Oracle 用のカスタムプロバイダを実装してみてはいかがです
    か?
記事No.91825 のレス /過去ログ158より / 関連記事表示
削除チェック/

■91840  Re[2]: DataGridViewを利用したログイン画面の作成
□投稿者/ 逃避行動 -(2019/08/07(Wed) 11:02:19)
    No91837 (WebSurfer さん) に返信
    > ■No91825 (逃避行動 さん) に返信
    >
    ご返信いただきありがとうございます。

    今、VB6のソースコードをvb.netで使えるようにしているのですが…
    すこし手法を再度検討してみます。

    いただいたURLも参考にさせていただきます。
    ありがとうございました!
記事No.91825 のレス /過去ログ158より / 関連記事表示
削除チェック/

■95006  削除済みのファイルにアクセスする方法
□投稿者/ ppp -(2020/06/11(Thu) 10:09:23)

    分類:[.NET 全般] 

    VB.NETを使って、
    ファイル復元ソフトや完全削除ソフトのようなものを作ってみたいと考えています。

    削除済みのファイルリストを取得して
    そのファイルにアクセスしたいのですが、
    どのようなコードを使えば良いですか?

    調べてみてはみたのですが、
    情報が見つからなかったのでお教えください。

親記事 /過去ログ165より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -