gpt4 book ai didi

c# - 在另一个类中初始化的变量在从另一个类访问时返回 null

转载 作者:行者123 更新时间:2023-12-02 04:43:35 24 4
gpt4 key购买 nike

请帮忙,我需要使用类 MainPage 中的类 UserLocation 中的 Geoposition pos 变量,但它一直返回 null,此方法初始化 pos,

public Geoposition pos;
async public void preparePosition()
{
try
{
// Get the cancellation token.
_cts = new CancellationTokenSource();
CancellationToken token = _cts.Token;

//MessageTextbox.Text = "Waiting for update...";

// Get the position to derive the coordinates
_geolocator.DesiredAccuracy = Windows.Devices.Geolocation.PositionAccuracy.High;
pos = await _geolocator.GetGeopositionAsync().AsTask(token);

}
catch (System.UnauthorizedAccessException)
{

}
catch (TaskCanceledException)
{

}
finally
{
_cts = null;
}

}

然后在类 MainPage 中

UserLocation LocationData = new UserLocation();
Geoposition p = LocationData.pos;

但它返回null,iv也尝试使用返回方法

    public Geoposition getPosition()
{
preparePosition();
return pos;
}

//然后

使用 p = LocationData.getPosition();

最佳答案

preparePosition() 是异步的,因此它会在 GPS 硬件获取位置之前返回。

我可以建议

public async Task<GeoPosition> PreparePosition()
{
...
return pos;
}

然后你必须从异步过程中调用它

public async void MyButtonClick(sender, e){
using (var p = await preparePosition()){
...
}
}

当然你只能说using (var p= ... if p implements IDisposable

关于c# - 在另一个类中初始化的变量在从另一个类访问时返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20299302/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com