更改参考值?

时间:2014-07-03 00:12:04

标签: c# variables asynchronous reference loading

我试图通过引用来更新图片。我知道问题出在哪里,但我很好奇是否有可能在C#中做这样的事情。

我制作了一个系统,人们可以在旁边与图片进行对话,并且正在加载一个" loading"调用图片的异步加载时的图像(因为它可能很大并且需要一段时间才能加载)。所有这一切都在起作用,我只是好奇我是否可以使用图片的变量来更新图片,或者我是否应该引用该对象(因为对象可能是三种不同中的一种,具体取决于哪里用户是,但它总是引用图片。)

这是我试图尽可能明确命名的伪代码。

Class AsyncLoad()
{
Picture pic;
string location;

void AsyncLoadStart(string picLocation, Picture picRef)
{
    pic = picRef;
    location = picLocation;
    AsyncLoad();
}

void AsyncLoad()
{

    pic = picRef;
    Picture picLoading = PictureFromFile(picLocation);
    while (picLoading.IsLoad)
        Wait();
    pic = picLoading; //issue is here
}
}

问题在于简单地丢弃旧pic的位置,并使pic参考picLoading。我只是好奇是否有办法做我想做的事情而不参考附加图片的对象。

澄清:我在尝试picLoading到pic时尝试更新picRef。我假设我必须保存对picRef所分配的对象的引用,并直接更新picRef。我只是好奇是否有另一种方式,比如如果这不是异步的话,ref关键字将如何工作。

编辑2:我使用这些图形的程序迫使我使用2个单独的方法加载,正如我上面已经澄清的 - 或者我只是使用了ref关键字。我更新了伪代码以表明这一点(它是一个不允许我直接运行异步代码的游戏环境,而是来自下一帧发生的更新调用)。如果我可以把参考放在图片上那就容易了。

1 个答案:

答案 0 :(得分:2)

如果你的目标是分配给原始参数,这似乎是基于你的代码段的情况,那么你应该在声明中使用ref关键字。

void AsyncLoadStart(string picLocation, ref Picture picRef)