我实际上有两个关于同一问题的问题,但我认为最好将它们分开,因为我认为它们并不相关.
背景:我正在VB.NET中编写一个Windows Mobile软件,其中任务需要连接到邮件服务器以发送和检索电子邮件.因此,我还需要一个Mime解析器(用于解码和编码)电子邮件以获取附件.首先我想,我会写一个小的"hack"来处理这个问题(使用普通的字符串解析),但后来我在CodeProject看到了一个用C#编写的项目我认为我会在我的解决方案中实施.我对C#了解不多,所以我只是从类中创建了一个类库,并在我的VB.NET项目中使用它.当我在普通的Windows计算机上瞄准Net Framework时,这个库工作得非常好,但当我打算制作针对Compact Net Framework的同一个库时,我遇到了麻烦.这是很自然的,因为Compact Net Framework有更多的限制,但实际上我没有得到那么多错误 - 只有两个错误,尽管在代码中的不同位置重复.
其中一个错误是在这个问题的主题中引用的错误,即"方法'没有重载'GetString'取'1'参数".如上所述,我对C#了解不多,所以我将带有错误的类转换为VB-NET,但我仍然不太了解..这是给出上述错误的函数:
public virtual string DecodeToString(string s)
{
byte[] b = DecodeToBytes(s);
if(m_charset != null)
{
//ERROR ON THIS LINE
return System.Text.Encoding.GetEncoding(m_charset).GetString(b);
}
else
{
m_charset = System.Text.Encoding.Default.BodyName;
//ERROR ON THIS LINE
return System.Text.Encoding.Default.GetString(b);
}
}
Run Code Online (Sandbox Code Playgroud)
如果这个类需要完整的源代码,那么我可以在这个帖子中的另一个消息中发布它,或者你可以通过在上面提到的网站上下载代码并查看名为MimeCode的类来找到它. CS.
谁可以帮助我?我可以以某种方式重写上述功能来克服这个问题吗?
我提前感谢你的帮助.
亲切的问候,祝大家新年快乐.
Rgds,moster67
我在TextBox控件中有一个带有日期值的表单.该表单使用数据绑定与BindingSource对DataSet和SQL 2005 CE数据库.我在哪里控制日期的格式?例如,在沿途的物业中,我没有看到剥离时间部分的可能性.
我当然可以在数据库中执行它并传递字符串而不是DateTime,但这是解决方法而不是解决方案.
我想从运行我的应用程序的设备中获取有关设备、操作系统等的一些信息。我需要记录这些数据,以便稍后运行一些诊断程序。
现在我认为这些数据位于 Microsoft.Win32.Registry 中,但这意味着我需要知道访问值的所有键。
任何的想法?
Compact Framework,Windows Mobile 6,C#.
我正在对紧凑框架进行一些背景线程,并且有一个问题:终止工作线程.
代码
我有以下ThreadWorker类(来自这里的代码),在执行时,将在某些点执行检查以查看它是否应该退出.....
public class ThreadWorker
{
public event EventHandler<ProgressEventArgs> OnProgress;
protected virtual void Progress(ProgressEventArgs args)
{
if (OnProgress != null)
OnProgress(this, args);
}
private void DoLongProcess()
{
// This will take a long time.
Thread.Sleep(15000);
Progress(new ProgressEventArgs("Some info for the UI to display."));
Thread.Sleep(15000);
}
public void DoSomeBackgroundWork()
{
try
{
while (!Stopping)
{
DoLongProcess();
if (Stopping) return;
DoLongProcess();
if (Stopping) return;
DoLongProcess();
if (Stopping) return;
DoLongProcess();
if (Stopping) return;
}
}
finally …Run Code Online (Sandbox Code Playgroud) 因为我尝试了许多方法来停止在.net紧凑框架3.5上运行的手持设备上的多实例问题.
目前,我通过创建"Mutex"获得解决方案,并检查是否有相同的进程正在运行.我把这个语句放在"Program.cs"中,它将在程序启动时第一次执行.
但我认为这不是我的问题,因为我得到了用户的请求,他们需要在运行时禁用"程序图标".
我理解用户的观点,他们有时可能会在短时间内"打开"该程序多次或多次.所以,如果它仍然能够"打开".这意味着程序需要自己初始化,最终可能会失败.是否可以绝对阻止多个实例?还是有其他方式没有编程,如在Windows CE上编辑注册表?
这是我的源代码:
bool firstInstance;
NamedMutex mutex = new NamedMutex(false, "MyApp.exe", out firstInstance);
if (!firstInstance)
{
//DialogResult dialogResult = MessageBox.Show("Process is already running...");
Application.Exit();
}
Run Code Online (Sandbox Code Playgroud)
NamedMutex是OpenNetCF的类.
我在使用OpenNetCF 2.3版的C#,Compact Framework 3.5,Windows Mobile 5项目中获得无线信号强度时遇到了困难.我的目标是在发送请求之前评估网络访问的强度,因为此设备的网络覆盖可能不完整.
在谷歌周围后,我找到了两个可能的线索.Microsoft的一个示例项目,它使用AccessPoint在OpenNETCF 2.3中标记为已弃用的now 类,以及一些建议SignalStrength在WirelessNetworkingInterface类上使用该属性的建议.这似乎是理论上的一个好主意但是工厂方法似乎应该返回此类OpenNETCF.Net.NetworkInformation.WirelessNetworkInterface.GetAllNetworkInterfaces()而不是返回INetworkInterface不暴露SignalStrength属性的类.
有没有人设法使用OpenNETCF 2.3评估无线强度?我不明白这个包的正确用法吗?或者有没有人为此问题制定了解决方案?
任何指导或帮助都非常有用.
我一直在使用在Visual Studio 2008中使用.NET Compact Framework 3.5构建的Windows Mobile 6应用程序.该应用程序构建速度极慢,大部分时间都在使用PlatformVerificationTask.
如何加快构建速度?
deployment compact-framework windows-mobile visual-studio-2008
我正在插入SQL Server CE表,其中主键是自动生成的,在插入完成后如何获取主键?
我正在Windows Mobile 6.1上使用3.5 Compact Framework开发应用程序.我有一个ListView,我想在添加项目时自动滚动此列表.
我能怎么做?
我在紧凑框架3.5中工作
myfile.cs
public class Cases : IEnumerable
{
private Hashtable cases = new Hashtable(); // hashtable initilized
IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return cases.GetEnumerator();
}
public bool Add(string caseCode, string scanTime)
{
Reading reading = new Reading(caseCode, scanTime);
cases.Add(caseCode, reading);
//some other logic
}
}
Run Code Online (Sandbox Code Playgroud)
我已经将哈希表初始化为case.我在case变量中添加扫描条形码.目前它没有任何顺序.我需要按升序排序扫描条形码.如何做到这一点.
更新:
例如,我正在添加以下项目,
Cases a = new Cases();
a.Add("11115", "2014-09-11T01:55:25.0000000-07:00");
a.Add("11111", "2014-09-11T01:55:40.0000000-07:00");
a.Add("11112", "2014-09-11T01:55:45.0000000-07:00");
a.Add("11110", "2014-09-11T01:55:56.0000000-07:00");
a.Add("11113", "2014-09-11T01:56:10.0000000-07:00");
a.Add("11111", "2014-09-11T01:56:17.0000000-07:00");
Run Code Online (Sandbox Code Playgroud)
我希望数据的打印顺序与列表中的顺序相同.这里的关键是时间,这里的时间默认是升序.但是在打印过程中打印的是这样的,
[11110,StackOverflow.Reading]
[11111,StackOverflow.Reading]
[11111,StackOverflow.Reading]
[11112,StackOverflow.Reading]
[11113,StackOverflow.Reading]
[11115,StackOverflow.Reading]
Run Code Online (Sandbox Code Playgroud)
我想要这样打印,
[11115,StackOverflow.Reading]
[11111,StackOverflow.Reading]
[11112,StackOverflow.Reading]
[11110,StackOverflow.Reading]
[11113,StackOverflow.Reading]
[11111,StackOverflow.Reading]
Run Code Online (Sandbox Code Playgroud)
使用哈希表随机打印上面的内容而不是任何顺序.但是SortedList是按升序打印的.你能告诉我如何以相同的顺序打印列表中的数据.
c# ×7
.net ×2
autoscroll ×1
data-binding ×1
datetime ×1
deployment ×1
formatting ×1
handheld ×1
listview ×1
mime ×1
opennetcf ×1
sql ×1
winforms ×1
wireless ×1