首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AutoResetEvent如何在listview上编写

AutoResetEvent如何在listview上编写
EN

Stack Overflow用户
提问于 2015-11-18 03:11:36
回答 1查看 47关注 0票数 0

我如何在名为“LivStampaEventi”的listview上编写我想要实时写入事件日志窗口的事件,我应该使用委托,如果是这样的话,你能告诉我怎么做吗?感谢你们所有人

代码语言:javascript
复制
  Private Shared signal As AutoResetEvent
Private Sub Form1_Load_1(sender As Object, e As EventArgs) Handles MyBase.Load
    scelta = ""
    Me.Thread = New Thread(New ThreadStart(AddressOf Me.Threaddammiora)) 'creo il thread
    Me.Thread.Start() 'lancio il thread

    width_rem = LivStampaEventi.Width
    Height_rem = LivStampaEventi.Height
    Dim remoteEventLogs() As EventLog

    Dim log As EventLog
    For Each log In remoteEventLogs
        cmb_tutti_i_log.Items.Add(log.Log)
    Next log

    signal = New AutoResetEvent(False)
    Dim myNewLog As New EventLog("PMIS_A2A", System.Environment.MachineName)

    AddHandler myNewLog.EntryWritten, AddressOf Me.MyOnEntryWritten
    myNewLog.EnableRaisingEvents = True
    myNewLog.WriteEntry("PMIS_A2A", EventLogEntryType.Information)

    signal.WaitOne()
End Sub


Public Sub MyOnEntryWritten(ByVal [source] As Object, ByVal e As EntryWrittenEventArgs)
    Console.WriteLine("In event handler")
    signal.Set()
    Dim list As New List(Of String)
    list.Clear()
    list.Add(e.Entry.EventID.ToString())
    list.Add(e.Entry.Message.ToString())
    list.Add(e.Entry.EntryType.ToString())
    list.Add(e.Entry.TimeWritten.ToString())
    list.Add(e.Entry.TimeGenerated.ToString())
    list.Add(e.Entry.Index.ToString())
    LivStampaEventi.Items.Add(New ListViewItem(list.ToArray))
    If (e.Entry.EntryType.ToString = "Warning") Then
        LivStampaEventi.Items(LivStampaEventi.Items.Count - 1).BackColor = Color.Yellow
    Else
        If (e.Entry.EntryType.ToString = "Error") Then
            LivStampaEventi.Items(LivStampaEventi.Items.Count - 1).BackColor = Color.Red
        Else
            LivStampaEventi.Items(LivStampaEventi.Items.Count - 1).BackColor = Color.Green
        End If
    End If
End Sub ' MyOnEntryWritten
EN

回答 1

Stack Overflow用户

发布于 2015-11-18 04:14:26

您似乎正在尝试从非UI线程设置list属性,这会导致出现异常。您引用MSDN链接提供了一个解决方案:在您的MyOnEntryWritten中测试InvokeRequired

代码语言:javascript
复制
If list.InvokeRequired then // true if not in the UI thread
    list.Invoke(...) // use a delegate for MyOnEntryWritten 
Else
    // the actual code
End If

要为调用创建param,请检查您的链接

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33765146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档