heyo, i was getting really strange behavior from sfml text
after changing DisplayedString while in a task, one of many issues could occur:
- System.AccessViolationException when drawing the text
- System.AccessViolationException when trying to get its local/global bounds
- crash but with no error
- no crash but text is rendered with visual errors such as incorrect characters and or distorted characters
it seems like memory is getting corrupted somehow but im not exactly sure why
code:
using System;using System.Threading;using System.Threading.Tasks;using SFML.Graphics;using SFML.Window;internal class Program
{ public static RenderWindow Window
; public static void Main
(string[] args
) { Window
= new RenderWindow
(new VideoMode
(640,
480),
"Test"); Window
.SetFramerateLimit(60); var textHolder
= new TextHolder
(); while (Window
.IsOpen) { Window
.Clear(); Window
.Draw(textHolder
); Window
.Display(); } }}internal class TextHolder
: Drawable
{ private Text _text
; public TextHolder
() { _text
= new Text
("Initial String",
new Font
("arial.ttf")); Task
.Run(() => { Thread
.Sleep(1000); _text
.DisplayedString = "ABCDEFGHIKLMNOPQRSTUVWXYZ"; Console
.WriteLine(_text
.GetLocalBounds().Width); }); } public void Draw
(RenderTarget target, RenderStates states
) { target
.Draw(_text
); }} sorry if a missed anything