【问题标题】:how to call public sub from private shared sub vb.net如何从私人共享子 vb.net 调用公共子
【发布时间】:2014-06-27 16:43:21
【问题描述】:

这是为了将数据写入同一个文件多线程

Dim _readWriteLock As ReaderWriterLockSlim = New ReaderWriterLockSlim

    Private Sub writedatatofile(ByVal s As String)
        ' Set Status to Locked

        _readWriteLock.EnterWriteLock()
        Try
            ' Append text to the file
            Dim sw As StreamWriter = File.AppendText("textfile.txt")
            sw.WriteLine(s)
            sw.Close()
        Finally
            ' Release lock
            _readWriteLock.ExitWriteLock()
        End Try
    End Sub

这是为了获得异步响应

Private Shared Sub GetResponseCallback(ByVal asynchronousResult As IAsyncResult)
      Dim response As HttpWebResponse = CType(request.EndGetResponse(asynchronousResult),  _
       HttpWebResponse)

writedatatofile(Response.Headers.Tostring)

End Sub

当我从 GetresponseCallback 调用 writedatatofile 时,我收到此错误:如果没有类的显式实例,则无法从共享方法或共享成员初始化程序中引用类的实例成员

如何将安全多线程从异步响应写入同一个文本文件?

【问题讨论】:

    标签: .net vb.net


    【解决方案1】:

    您不能从共享(静态)方法调用实例方法。您基本上是在说,“我想从一个不关心对象实例的方法中调用一个对对象的特定实例进行操作的方法”——那么 Shared 方法如何能够做到这一点?

    您需要将 GetResponseCallback 更改为实例(删除 Shared 修饰符)。

    【讨论】:

    • 而且 writedatatofile 不是公共 BTW,如问题标题中所述。
    • @abhitalks 这两种方法似乎都在同一个类中,所以它不公开也没关系。如果公共方法属于同一类型,则可以调用私有方法。
    • 是的,我试过了,但它也是 begingetrequeststream 所以我也应该删除共享修饰符!谢谢
    猜你喜欢
    • 2016-08-28
    • 2013-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    • 2013-06-11
    相关资源
    最近更新 更多