【问题标题】:vb.net problems with STAThread() Error: invalidOperationExceptionvb.net 问题与 STAThread() 错误:invalidOperationException
【发布时间】:2013-08-14 21:43:12
【问题描述】:

我想通过向我的线程池添加一个新的回调来使函数“createFolder”更快(或者至少不阻塞我的主线程)。

我用 STAThread() 标记了主函数,异常告诉我用 STAThread() 标记我的主函数。

我愿意接受任何提示!

【问题讨论】:

    标签: vb.net sta


    【解决方案1】:

    您将STAThread 属性放置在错误的方法上:它必须是表单启动的方法,而不是您正在执行的方法。

    在许多情况下,您的应用程序将具有Sub Main,这就是需要使用STAThread 属性修饰的内容。来自 MSDN 的示例:

    Public Class MyForm
       Inherits Form
    
       Public Sub New()
          Me.Text = "Hello World!" 
       End Sub 'New 
    
       <STAThread()> _
       Public Shared Sub Main()
          Dim aform As New MyForm()
          Application.Run(aform)
       End Sub 
    
    End Class 
    

    【讨论】:

    • 感谢您的回答,但我没有主副。我有一个表单,它导入我的包含 createFolder 函数的 ftp 类。我用 stathread() 标记了我的表单中的函数(调用 ftp.createFolder() 函数),但它不起作用。还尝试了标记表单加载处理程序,结果相同。
    • 我可以退后一步问:“如何避免由于 ftp 方法而阻塞的表单线程?”目前我使用 ThreadPool,有人知道更好的解决方案吗?
    • @MaBi 似乎您正在寻找一种在后台线程上执行冗长操作以防止 UI 阻塞的方法。由于您正在构建一个 winforms 应用程序,您应该看看 BackgroundWorker 组件,它简化了这项任务。在 Google 上搜索 BackgroundWorker:google.com/search?q=backgroundworker%20vb.net
    猜你喜欢
    • 1970-01-01
    • 2012-01-30
    • 1970-01-01
    • 1970-01-01
    • 2013-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多