私はタイマーとスレッドが新しく、MainWindowのコントロールを編集/変更する関数を呼び出すタイマーの作成方法がわかりません。System.Timers.Timerを使用して別のスレッドのコントロールにアクセス/変更する方法?
XAMLコード:
<Window x:Class="TimerTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<TextBox Height="287" HorizontalAlignment="Left" Margin="12,12,0,0" Name="textBox1" VerticalAlignment="Top" Width="479" />
</Grid>
</Window>
C#コード:
namespace TimerTest
{
public partial class MainWindow : Window
{
//Declaring my aTimer as global
public static System.Timers.Timer aTimer;
//Function that is called
public void OnTimedEvent(object source, ElapsedEventArgs e)
{
textBox1.Text += "SomeText ";
}
public MainWindow()
{
InitializeComponent();
aTimer = new Timer();
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
aTimer.Interval = 1000; // every 5 seconds
aTimer.Enabled = true;
}
}
}
私が取得エラー: "別のスレッドがそれを所有しているので、呼び出し元のスレッドがこのオブジェクトにアクセスすることはできません。" P .:私は代議員とはあまりよくないので、この場合私が助けてくれると思うなら、コードサンプルを投稿してください。
:http://stackoverflow.com/questions/4115598/controls-and-threads/4115634#4115634 – davisoa
なぜこのスレッドタイマークラスを使用して、System.Windows.Forms.Timerがある場合にビジュアルコントロールにアクセスするのですか? –
@davisoa:Bleah、再帰的更新メソッドを使用するコードスニペットは嫌です。何が起こっているのかを理解するのに、私には常に5分かかります。 – Tudor