我最近给自己买了一部新手机,运行Windows Mobile 6.1 Professional.当然,我目前正在考虑做一些编码,基于业余爱好.我的计划是将服务作为DLL运行,由Services.exe加载.这需要收集som数据,并定期(每5-10分钟)进行一次som处理.
由于我需要定期运行,因此对我来说这是一个问题,系统通常会在用户短暂不活动后进入休眠状态(暂停).
我一直在阅读我在MSDN上找到的所有文档,以及有关此主题的MSDN博客,在我看来,这个问题有三种可能的解决方案:
通过定期调用SystemIdleTimerReset将系统保持在"Always On"状态.这似乎有点过分,因此是不可能的.
让系统定期用CeRunAppAtTime唤醒,并进入无人值守状态,进行处理.
使用无人参与状态而不是进入完全暂停状态.这对用户来说是透明的,但系统永远不会进入睡眠状态.
第二种方法似乎是首选,但是,这需要系统在唤醒时调用可执行文件,唯一的任务是通知我的服务它应该开始处理.这似乎有点不必要,我想避免这个额外的可执行文件.我当然可以将我的所有处理都移到这个额外的可执行文件中,但我想使用在作为服务运行时提供的一些功能,并且在处理开始时也没有弹出程序(即使它在后台).
乍一看,第三种方法似乎与第一种方法具有相同的基本问题.但是,我已经阅读了一些MSDN博客,可能通过这种方法实际节省电池消耗,而不是经常进入和退出挂起模式(对此的论点是WM平台的性质是当系统处于空闲状态时,电池消耗非常少.进出暂停需要相当多的处理.
所以我想我的问题如下:
在我的情况下,你会推荐哪种方法?关于保持最低电池消耗,以及良好的清洁实施.
在第二种方法的情况下,是否可以消除对通知可执行文件的需求?通过替代API函数或平台上现有的通用应用程序?
在第三种方法的情况下,您是否知道与索赔相关的任何信息/统计数据,在使用无人值守模式进入暂停状态时可以延长电池寿命.例如,在首选无人值守模式之前,您需要多长时间将系统拉出挂起状态.
具体实施(奖金)问题:是否有必要定期调用SystemIdleTimerReset以保持无人值守模式?
最后,如果您认为我过早地排除了第一种方法,请告诉我原因.
请在您的回复中包括您的回答是基于知识,还是仅仅是猜测(后者也非常受欢迎!).
如果您认为我需要澄清此问题的任何部分,请发表评论.
有没有办法用Visual Studio 2008构建Pocket PC 2002(3.0)?
CE框架上是否也提供了扩展方法?我有一个字符串的扩展方法,在Windows窗体项目中工作正常,但它不会在PocketPC应用程序中构建.
我认为这很容易找到,但我无法在PocketPC上找到有关扩展方法的任何信息.
编辑:哎呀这是我的错误.我在Visual Studio 2008中编写了扩展方法,但PocketPC项目是在Visual Studio 2005中编译的,我没有意识到.那是我生命中的一小时,我永远不会回来.无论如何,谢谢大家的答案.
谁可以帮助我:我正在使用VS.net 2008在Win7 x64上工作.我正在为pocketpc开发.
当我的应用程序部署到设备模拟器时,它无法连接到我的计算机/数据库服务器.仿真器和移动设备中心都配置为使用DMA.当我使用设备管理器托住设备时,没有任何反应.
我该怎么办?
Windows Mobile上有哪些不同的数据库选项?我使用CEDB和EDB来满足线性数据集的需求.
我听说过SQL server 2005 Mobile版.但与其他人相比有什么优势(如果有的话)
我想更改pocketPC上的注册表值.我运行了以下代码:
if(enabled)
{
dwData = 120;
}
if(RegSetValueEx(HKEY_LOCAL_MACHINE, _T("System\\CurrentControlSet\\Control\\Power\\Timeouts\\BattSuspendTimeout"), 0, REG_DWORD, (LPBYTE)&dwData, sizeof(DWORD)))
{
return FALSE;
}
Run Code Online (Sandbox Code Playgroud)
但它不会改变注册表项.有谁知道如何用c ++设置注册表键值?
谢谢!
我正在使用Visual Studio 2005中的PocketPC应用程序.解决方案正在构建正常,然后突然崩溃.第一个错误就是这个(假设项目是FooPDA):
"无法找到位于'%InstallDir%'中的文件'FooPDA.exe'的源文件'C:\ FooPDA\obj\Release\FooPDA.exe',该文件可能不存在或被锁定."
这个错误对我来说相当混乱.它正在寻找它应该生成的文件.任何人都知道这里可能出了什么问题?
编辑:项目在版本控制之外构建正常,我只需更改项目上的图标,它就会开始抛出这个神秘的错误.
在.Net 4.0中,我System.Enum.GetValues(typeof(Gender))用来获取枚举项列表.
在一个完整的例子中,我用这种方式查找枚举值:
Gender retVal = Gender.Male;
foreach (Gender enumType in System.Enum.GetValues(typeof(Gender)))
{
if (enumType.ToString().Trim().ToUpper().Substring(0,1).Equals(stringToEnum.Trim().ToUpper()))
{
retVal = enumType;
break;
}
}
Run Code Online (Sandbox Code Playgroud)
但我怎么能在.Net 3.5(掌上电脑)中这样做?
提前致谢 !
我使用下面的答案,但它对我不起作用.这是代码:
枚举值:
namespace Ionic.Zlib
{
public enum CompressionLevel
{
Level0 = 0,
None = 0,
Level1 = 1,
BestSpeed = 1,
Level2 = 2,
Level3 = 3,
Level4 = 4,
Level5 = 5,
Level6 = 6,
Default = 6,
Level7 = 7,
Level8 = 8,
BestCompression = 9,
Level9 = 9,
} …Run Code Online (Sandbox Code Playgroud) 我有个问题.在我的情况下,我想检索十进制值的最后一位数,以进行舍入调整.以下是我的代码:
private void calculateADJ()
{
string result = Strings.Right(txtGTotal.Text, 1);
if (result == "1" || result == "6")
{
txtStoreRA.Text = "-0.01";
txtOutstanding.Text = (Convert.ToDouble(txtGTotal.Text) - 0.01).ToString("0.00");
}
if (result == "2" || result == "7")
{
txtStoreRA.Text = "-0.02";
txtOutstanding.Text = (Convert.ToDouble(txtGTotal.Text) - 0.02).ToString("0.00");
}
if (result == "3" || result == "8")
{
txtStoreRA.Text = "0.01";
txtOutstanding.Text = (Convert.ToDouble(txtGTotal.Text) + 0.01).ToString("0.00");
}
if (result == "4" || result == "9")
{
txtStoreRA.Text = "0.02";
txtOutstanding.Text = (Convert.ToDouble(txtGTotal.Text) + …Run Code Online (Sandbox Code Playgroud)