我發現怪異異常的GTK TextView的,希望有人能解釋它們。我怎麼能自動滾動到底在GTK的TextView
有一個簡單的功能,滾動到窗口底部的:
richTextBox.ScrollToIter(richTextBox.Buffer.EndIter, 0, true, 0, 0);
這大概應該是工作和工作在大多數情況下。但有時它崩潰與MemoryAccessViolation整個應用程序(SIGSEGV在Linux中)
我的應用程序每次調用此插入文本到TreeView,以便我可以永遠關閉(您正在插入文本到某個窗口,並且你想看到最新的文字,就像在聊天中一樣)
文本只從主線程插入,這個函數也是隻在主線程中調用的,所以在我自己的應用程序中這不能和多線程相關,但是我發現了TextView正在與其餘應用程序異步渲染文本。就像負責繪製和處理文本的線程不是真正的主線程一樣。例如,如果我將大文本加載到TextView中,即使TextView以某種方式加載文本,我的應用程序也會響應。
爲此,我認爲,TextView的實際上是與自己的獨立的線程工作,並且此線程更改文本,因爲我試圖滾動窗口。文本被改變的無效ITER之間某處所以在我傳遞richTextBox.Buffer.EndIter
到TextView的ScrollToBottom IL代碼功能的文本是由這個外國線程可能發生變化,ITER是無效的,這就是爲什麼我得到這個存儲器存取例外。
這可能是GTK甚至是錯誤的,但我使用非常穩定的版本(2.1.20)隨機附帶的所有單版本,直到mono3,甚至所有的Windows GTK#版本。
是否有任何其他的方式來向下滾動「安全」