Windows Phone 8 线程无效的跨线程访问 [英] Windows Phone 8 threading Invalid cross-thread access
本文介绍了Windows Phone 8 线程无效的跨线程访问的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在为 Windows Phone 8 制作一个井字游戏,我希望游戏能够作为主菜单的背景来玩游戏
I'm making a Tic-Tac-Toe game for Windows Phone 8 and I want the game to play vs itself as a background for the main menu
private Button[] bts;
private List<Button> temp = new List<Button>();
private int[,] winningConditions;
private int counter;
private string Board;
public MainPage()
{
InitializeComponent();
bts = new[] { _1, _2, _3, _4, _5, _6, _7, _8, _9 };
winningConditions = new[,] { { 0, 1, 2 }, { 3, 4, 5 }, { 6, 7, 8 }, { 0, 3, 6 },
{ 1, 4, 7 }, { 2, 5, 8 }, { 0, 4, 8 }, { 2, 4, 6 } };
counter = 0;
bTextFont();
}
private void NewGame()
{
foreach (Button i in bts)
i.Content = "";//here I get an Exception saying Invalid cross-thread access
while (true)
{
NearlyHuman();
someOneWon();
counter++;
}
}
private void form_Loaded(object sender, RoutedEventArgs e)
{
Thread backGround = new Thread(new ThreadStart(NewGame));
backGround.Start();
}
推荐答案
您不能从任何其他线程直接访问 UI 线程.因此,在 Dispatcher.BeginInvoke()
You cannot access the UI thread from any other thread directly. So, Encose your UI access code in the Dispatcher.BeginInvoke()
Dispatcher.BeginInvoke(() =>
{
foreach (Button i in bts)
i.Content = "";
});
这篇关于Windows Phone 8 线程无效的跨线程访问的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文