如何解决它活着吗? Xamarin 上的服务器连接,C#
我想做一个它还活着吗?来检查我在 Xamarin.Forms 上的服务器连接。如果连接中断,它将显示一条警报消息。当连接恢复时,警报消息将更加令人沮丧。
我有一个检查连接的 http get 请求,但我不知道如何编写其余代码。我需要一个功能,他将在后台运行,检查我应用程序所有页面上的连接。
这是我的要求:
public async void Alive() {
try {
Uri uri = new Uri(Settings.basePath + "/alive");
return await client.GetAsync(uri);
} catch {
return null;
}
}
我怎么能这样做?
解决方法
我想做一个它还活着吗?在 Xamarin.Forms 上检查我的服务器连接。如果连接中断,它将显示一条警报消息。当连接恢复时,警报消息将更加令人沮丧。
您可以在 App.cs 中创建方法。每 5 秒检查一次服务器连接。
IDynamicAlert alert = DependencyService.Get<IDynamicAlert>();
public App()
{
InitializeComponent();
var seconds = TimeSpan.FromSeconds(5);
Xamarin.Forms.Device.StartTimer(seconds,() =>
{
if (CheckConnection())
{
if (alert != null)
{
alert.Dismiss();
}
return true;
}
else
{
alert.Show("alert message","connection is break!");
return true;
}
});
MainPage =new NavigationPage( new simplecontrol.Page26());
}
private bool CheckConnection()
{
//check your server connection
if ()
{
//connection is alive.
}
else
{
//connection is break.
}
}
我创建了自定义的 ALertDialog,请按照代码;
在项目共享代码中创建接口。
public interface IDynamicAlert
{
void Show(string title,string message);
void Dismiss();
}
然后在Android平台上实现这个接口。
[assembly: Dependency(typeof(DynamicAlert))]
namespace FormsSample.Droid
{
public class DynamicAlert : IDynamicAlert
{
Android.App.AlertDialog.Builder builder;
AlertDialog alert;
public void Dismiss()
{
alert.Hide();
}
public void Show(string title,string message)
{
alert.SetTitle(title);
alert.SetMessage(message);
alert.SetButton("OK",(sender,args) => { });
alert.SetCancelable(false);
alert.Show();
}
public DynamicAlert()
{
builder = new AlertDialog.Builder(MainActivity.mac);
alert = builder.Create();
}
}
}
在 MianActivity.cs 中创建静态 MainActivity mac。
public static MainActivity mac;
protected override void OnCreate(Bundle savedInstanceState)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(savedInstanceState);
mac = this;
global::Xamarin.Forms.Forms.Init(this,savedInstanceState);
LoadApplication(new App());
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。