Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Почему не работает? Добавлено: 17.03.08 22:29  

Автор вопроса:  RedRum
шифровальщик\расшифровальщик текста
ругается на OpenFileDialog3, грит
Current thread must be set to single thread apartment (STA) mode before OLE calls can be made. Ensure that your Main function has STAThreadAttribute marked on it. This exception is only raised if a debugger is attached to the process.

как поправить ума не приложу..
 
Public Class Form1
    Dim thr As Threading.Thread = New Threading.Thread(AddressOf s1)
    Dim thr2 As Threading.Thread = New Threading.Thread(AddressOf s2)
    Public Sub s1()
        Dim OpenFileDialog3 As New OpenFileDialog
        OpenFileDialog3.ShowDialog()
        Dim name = OpenFileDialog1.FileName
        FileOpen(1, OpenFileDialog1.FileName, OpenMode.Input)
        Do While Not EOF(1)
            Dim A As String = LineInput(1)
            RichTextBox1.Text += A + Chr(13)
            Dim i = 0
            For i = 0 To Len(A) - 1
                RichTextBox2.Text += Chr(Asc(A(i)) + 1)
            Next i
            RichTextBox2.Text += Chr(13)
        Loop
        FileClose(1)
        FileOpen(1, OpenFileDialog1.FileName, OpenMode.Output)
        Print(1, RichTextBox2.Text)
        FileClose(1)
    End Sub
    Public Sub s2()
        Dim OpenFileDialog2 As New OpenFileDialog
        OpenFileDialog2.ShowDialog()
        Dim name = OpenFileDialog1.FileName
        FileOpen(1, OpenFileDialog1.FileName, OpenMode.Input)
        Do While Not EOF(1)
            Dim A As String = LineInput(1)
            RichTextBox1.Text += A + Chr(13)
            Dim i = 0
            For i = 0 To Len(A) - 1
                RichTextBox2.Text += Chr(Asc(A(i)) - 1)
            Next i
            RichTextBox2.Text += Chr(13)
        Loop
        FileClose(1)
        FileOpen(1, OpenFileDialog1.FileName, OpenMode.Output)
        Print(1, RichTextBox2.Text)
        FileClose(1)
    End Sub
    Public Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        thr.Start()
    End Sub
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        thr2.Start()
    End Sub
End Class

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 RedRum



Вопросов: 3
Ответов: 5
 Профиль | | #1 Добавлено: 17.03.08 22:31
ругается даже не на OpenFileDialog3 а просто на Любой OpenFileDialog тот что находится в потоке

Ответить

Номер ответа: 2
Автор ответа:
 s12



Вопросов: 24
Ответов: 363
 Профиль | | #2 Добавлено: 18.03.08 03:30
Не, ну я может че-то не понял, но вот нафиг эти строчки нужны???
Dim OpenFileDialog2 As New OpenFileDialog
        OpenFileDialog2.ShowDialog()


А диалог вызывай в родительском потоке.

Ответить

Номер ответа: 3
Автор ответа:
 RedRum



Вопросов: 3
Ответов: 5
 Профиль | | #3 Добавлено: 18.03.08 18:30
вот я я понял что чет фигню какая то получилась.. а как ее вызвать в родительском , причем так чтоб цикл обрабатывал открытый файл в отдельном потоке нифига не понял как сделать.. OpenFileDialog2.ShowDialog() вызывает этот самый диалог выбора файла (без многопоточности всю это прекрасно работает, изначально все было в обработки события нажатия соот-щей кнопки, сейчас сейчас кнопка вызывает поток)

Ответить

Номер ответа: 4
Автор ответа:
 s12



Вопросов: 24
Ответов: 363
 Профиль | | #4 Добавлено: 19.03.08 01:26
а как ее вызвать в родительском


thr.Start()
        Dim OpenFileDialog2 As New OpenFileDialog
        OpenFileDialog2.ShowDialog()

А еще лучше:
Dim OpenFileDialog2 As New OpenFileDialog
      OpenFileDialog2.ShowDialog()
      thr.Start()


Потому что в 1м случае можешь наловишь кучу глюков.
Может все таки стоит вернутся к однопоточной программе?

И вообще, пошастай по форуму, где-то этот вопрос обсуждался.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам