判断是否真实启动,直接利用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绑定后一直刷新等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)