wpf判断程序是真实启动还是只有进程没有界面

wpf判断程序是真实启动还是只有进程没有界面,第1张

判断是否真实启动,直接利用SharePreference啊,在里面准备个boolean值,第一次进入程序为false,当用户跳过了引导界面,进入住Activity时,把SharePreference里面的boolean值,改为true,下次程序进来,在判断boolean值就行了。

1、在后台服务中,通过一个心跳机制向服务器发送请求,以检测账号是否在线。心跳机制可以定时发送一个请求,服务器在收到请求后会返回一个响应。如果一段时间内没有收到服务器的响应,就说明账号已经不在线了。

2、在前端WPF应用程序中,可以通过订阅后台服务发送的在线状态事件,以获取账号是否在线的信息。当后台服务检测到账号不在线时,就会触发在线状态事件,将账号的在线状态发送给前端WPF应用程序。

热门频道

首页

博客

研修院

VIP

APP

问答

下载

社区

推荐频道

活动

招聘

专题

打开CSDN APP

Copyright © 1999-2020, CSDNNET, All Rights Reserved

打开APP

斯内科

关注

DataGridView使用数据绑定,每隔几秒钟就刷新数据 原创

2021-11-07 23:02:55

斯内科

码龄11年

关注

我们测试使用内存数据表来绑定DataGridView,每隔5秒钟就刷新一次数据绑定。

新建winforms应用程序BIndDataDemo,将默认的Form1重命名为FormBindDataGridDemo。

窗体FormBindDataGridDemo设计如图:

窗体FormBindDataGridDemo主要程序如下

(忽略设计器自动生成的代码):

using System;

using SystemCollectionsGeneric;

using SystemComponentModel;

using SystemData;

using SystemDrawing;

using SystemLinq;

using SystemText;

using SystemThreading;

using SystemThreadingTasks;

using SystemWindowsForms;

namespace BIndDataDemo

{

public partial class FormBindDataGridDemo : Form

{

/// <summary>

/// 重新绑定数据事件

/// </summary>

public event Action<DataTable> EventRebindData;

/// <summary>

/// 线程是否已经运行

/// </summary>

bool isRun = false;

public FormBindDataGridDemo()

{

InitializeComponent();

dgvDataAutoGenerateColumns = false;

dgvcIdDataPropertyName = "Id";

dgvcEnglishNameDataPropertyName = "EnglishName";

dgvcChineseNameDataPropertyName = "ChineseName";

dgvcDBNumDataPropertyName = "DBNum";

dgvcAddressDataPropertyName = "Address";

dgvcDataTypeDataPropertyName = "DataType";

dgvcByteCountDataPropertyName = "ByteCount";

dgvcValueDataPropertyName = "Value";

}

private void FormBindDataGridDemo_Load(object sender, EventArgs e)

{

EventRebindData += FormBindDataGridDemo_EventRebindData;

EventRebindDataInvoke(GenerateDataTable(2021));

}

private void FormBindDataGridDemo_EventRebindData(DataTable dt)

{

thisBeginInvoke(new Action(() =>

{

dgvDataDataSource = dt;

dgvDataFirstDisplayedScrollingRowIndex = dgvDataRowsCount - 1;

}));

}

/// <summary>

/// 生成数据表

/// </summary>

/// <param name="count"></param>

/// <returns></returns>

private DataTable GenerateDataTable(int count)

{

DataTable dataTable = new DataTable("DataDemo");

dataTableColumnsAdd("Id", typeof(int));

dataTableColumnsAdd("EnglishName", typeof(string));

dataTableColumnsAdd("ChineseName", typeof(string));

dataTableColumnsAdd("DBNum", typeof(string));

dataTableColumnsAdd("Address", typeof(int));

dataTableColumnsAdd("DataType", typeof(string));

dataTableColumnsAdd("ByteCount", typeof(int));

dataTableColumnsAdd("Value", typeof(string));

dataTableRowsAdd(1, "DataItem1", "数据项1", "DB200", 0, "Int", 2, "32767");

dataTableRowsAdd(2, "DataItem2", "数据项2", "DB200", 2, "Real", 4, "-723425");

dataTableRowsAdd(3, "Barcode", "条码", "DB200", 6, "String", 12, "ABCD");

double coefficient = (count % 2 == 0 01 : 02);//系数

for (int i = 0; i < count; i++)

{

dataTableRowsAdd(i + 4, $"DataItem{i + 4}", $"数据项{i + 4}", "DB200", 18 + 4 i, "Real", 4, (i + 4) 2 + coefficient i);

}

return dataTable;

}

private void btnWrite_Click(object sender, EventArgs e)

{

int id = ConvertToInt32(numIdValue);

if (id < 1 || id > dgvDataRowsCount)

{

MessageBoxShow($"指定的编号{id}不在范围内", "错误");

return;

}

dgvDataRows[id - 1]Cells["dgvcValue"]Value = txtValueText;

}

/// <summary>

/// 重新绑定按钮事件

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void btnRebind_Click(object sender, EventArgs e)

{

btnRebindEnabled = false;

isRun = true;

Random random = new Random(GuidNewGuid()GetHashCode());

Task task = TaskFactoryStartNew(() =>

{

//每隔一秒钟重新绑定

while (isRun)

{

EventRebindDataInvoke(GenerateDataTable(randomNext(1000, 8000)));

ThreadSleep(5000);

}

});

TaskWaitAll(new Task[] { task }, 8000);

}

/// <summary>

/// 停止绑定事件

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void btnStop_Click(object sender, EventArgs e)

{

btnRebindEnabled = true;

isRun = false;

}

private void FormBindDataGridDemo_FormClosing(object sender, FormClosingEventArgs e)

{

//解除事件绑定

EventRebindData -= FormBindDataGridDemo_EventRebindData;

isRun = false;

}

}

}

程序运行如图:

打开CSDN,阅读体验更佳

DataGridView刷新数据_「已注销」的博客

在DataGridView上 *** 作数据之后,无论是增删改都是对数据库进行了 *** 作,而DataGridView这个控件在 *** 作之后是不会变化的,需要重新的去数据库里读取一下数据才行,可以理解为之刷新 DataTable dt = (DataTable)dataGridView1DataSource;dt

C# DataGridView 刷新_originaldream的博客_c# datagrid

c# 控件 dataGridView 使用时,都会遇到加载数据需要重新刷新。网上有不少答案,大致做一下总结。1)跟我以前一样笨,重新加载一遍数据,绑定一遍,使用datasource = datatable2)使用 datablinding 直接绑定数据3)使用updata() 刷新函数

C# datagridview 与数据源绑定后对数据的,增加,删除,插入,更新

C# datagridview 与数据源绑定后对数据的,增加,删除,插入,更新C# datagridview 与数据源绑定后对数据的,增加,删除,插入,更新

datagridview 定时刷新

private void Eating2_Load_2(object sender, EventArgs e) { string bookid = UsersStaticBook; // TODO: 这行代码将数据加载到表“dataSet_NoticeTB_NOTICE”中。您可以根据需要移动或移除它。 thi

继续访问

winform datagridview实时更新显示查询结果_全民医保的博客_d

datagridview是winform编程上很常见也很常用的控件之一,下面就根据一个小需求来展示一下datagridview是怎么实时刷新显示查询结果的。 目标界面 界面 说明:这个界面并不是VS系统的界面,是用到了第三方的控件实现的

关于datagridView的刷新_Yanzzz的博客_datagridview刷新

在重新读取SQl 数据库后,DataGridView中所有结果会显示两次。 但这并不是DataGridView本身的问题,而是由DataSet没有清空导致的。 所以解决办法就是dstablesclear(); 怪不得dataGridView没有clear

关于c# winform 中 使用多线程实现后台定时刷新 datagridview 数据

背景 本人c#新手,最近公司要求做的一个程序,需要利用后台定时查询数据绑定到datagridview上,要求程序不能出现假死,给人友好的体验,于是想到利用创建另一个线程用于查询数据然后再把数据显示在datagridview上。程序完成的时候,在本机上代码调试也没出问题,很完美,但是到了实际的运用的时候,datagridview的界面出了问题,没有数据并且显示一个大红叉,并且还报错。之前还以为是电

继续访问

DataGridView刷新数据

在DataGridView上 *** 作数据之后,无论是增删改都是对数据库进行了 *** 作,而DataGridView这个控件在 *** 作之后是不会变化的,需要重新的去数据库里读取一下数据才行,可以理解为之刷新 DataTable dt = (DataTable)dataGridView1DataSource; dtRowsClear(); dataGridView1Da

继续访问

如何用timer实现DataGridView实时更新数据。

private void timer1_Tick(object sender, EventArgs e) { dataGridView1DataSource = bllGetModelList()Tables[0]; dataGridView1Refresh(); }

继续访问

DataGridView数据刷新

自己遇到的问题,解决了,记录下,方便以后查找。 基本情况:前一段做一个Winform的项目,是用来验货的,多条产品数据,有一个应扫数量,和一个实扫数量,扫描到哪个商品就把列表中对应商品的数量加数量,如果商品实扫数量达到应扫数量,就移动到已扫完成列表。商品验货数量变化后,列表要精细排序,列表行的背景色要区分已验货的和未验货的。 如下图: 遇到问题:最开始用的List<>作为Da

继续访问

热门推荐 如何实现DataGridView刷新数据?

近期做项目,遇到一个问题,

继续访问

mysql更新datagridview_如何在Visual Basic(NET)中绑定到MySQL数据库的datagridview上实现自动刷新

正如jmcilhinney建议的那样,datagridviews被绑定到DataTables(或者有时候是我自己的列表),所以他说的听起来应该有效 显然,因为它没有提出我的建议:你说"fields"你可以更新,添加,删除等所选行,对吗?听起来你正在做一些新行 正如您在数据绑定网格视图中所做的那样,我怀疑您实际上是以典型方式添加它们,而是采用某种程序化替代方案 因此,尝试实现您的解决方案,

继续访问

如何实现DataGridView实时更新数据

贴过来做技术积累,原文出处:>

以上就是关于wpf判断程序是真实启动还是只有进程没有界面全部的内容,包括:wpf判断程序是真实启动还是只有进程没有界面、wpf如何实现账号是否在线、winformdatagridview绑定后一直刷新等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10118577.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存