我有这段代码:
public partial class FrmPrincipal : Form
{
private Image imagen;
public FrmPrincipal()
{
InitializeComponent();
...
}
private void menuItem1_Click(object sender, EventArgs e)
{
Thread t = new Thread(RequestImage);
t.Start();
}
private void RequestImage()
{
try
{
...
// I want to update this.token
this.imagen = retrieveImageFromWebService();
...
}
catch (Exception ex)
{
...
}
}
}
如何更新图片?我想保存一份图像副本,以便在用户需要时更新pictureBox。
谢谢!
答案 0 :(得分:2)
您的代码将完美运行。但是,如果您想从另一个线程中读取值并确保始终获得最新值,则应该在每次读取或写入时使其变为volatile或获取锁定。
答案 1 :(得分:1)
你在那里的代码应该可以正常工作。如果您在另一个线程中使用令牌,您可能希望同步获取和设置以避免数据损坏:
private string token {
[MethodImpl(MethodImplOptions.Synchronized)] get;
[MethodImpl(MethodImplOptions.Synchronized)] set;
}
此同步方法为not 100% safe in all circumstances,但出于您的目的,它应该可以正常工作