标签: compact-framework

我可以在.NET CF上使用什么来替代HttpUtility.UrlEncode

我需要将.NET代码移动到Compact Framework.该代码使用HttpUtility.UrlEncode对查询参数进行编码,但CF上没有System.Web.我可以用什么呢?

.net compact-framework

5
推荐指数
1
解决办法
2831
查看次数

PocketPC Windows CE上的C#扩展方法

CE框架上是否也提供了扩展方法?我有一个字符串的扩展方法,在Windows窗体项目中工作正常,但它不会在PocketPC应用程序中构建.

我认为这很容易找到,但我无法在PocketPC上找到有关扩展方法的任何信息.

编辑:哎呀这是我的错误.我在Visual Studio 2008中编写了扩展方法,但PocketPC项目是在Visual Studio 2005中编译的,我没有意识到.那是我生命中的一小时,我永远不会回来.无论如何,谢谢大家的答案.

c# extension-methods pocketpc compact-framework

5
推荐指数
1
解决办法
1512
查看次数

在Compact Framework上使用和保护WCF的最佳方法是什么?

我正在开发一个拥有多个客户端的应用程序 - 桌面,移动设备,Web门户.我们正在转向SOA类型的架构,并将使用WCF.

在桌面和Web门户端使用netTcp +传输/消息安全性+ Windows身份验证(甚至UsernameToken和自定义UsernameValidator提供程序)时,WCF的故事非常棒.

它完全崩溃的地方是在紧凑的框架方面...它支持的WCF子集是如此限制.我只是在整个SSL的标题中使用basicHttp +用户名/密码而辞职,但似乎你不能在紧凑的框架堆栈上添加标题(没有OperationContextScope) - 这样我就可以使用包含用户名/密码作为EVERY的参数了服务中的SINGLE操作方法.

请告诉我,我错了,有更好的方法.

wcf compact-framework

5
推荐指数
1
解决办法
2170
查看次数

C# 比较 float 和 int

我已经看到这段代码在 intertubes 上浮动,用于确定 Windows Mobile 设备是否具有 VGA 屏幕(代码位于 Form 类的方法中):

SizeF currentScreen = this.CurrentAutoScaleDimensions;
bool isVGA = currentScreen.Height == 192;
Run Code Online (Sandbox Code Playgroud)

即使屏幕是 VGA,因为浮点不精确(高度属性是浮点数),isVGA 是否有可能设置为 false?

c# floating-point compact-framework windows-mobile

5
推荐指数
1
解决办法
1856
查看次数

Action<T> 委托与与 dispose 相关的事件处理程序

我正在寻求架构建议以及对委托和 lambda 的更深入理解(除了需要解决实际问题之外!)

我们有通过 pda 上的串行端口与设备(秤)交互的代码。我们连接一个视图来从设备接收数据。由于一次只有一个视图“连接”到我们的缩放实例,因此我们使用 Action 类型的属性来处理缩放实例和视图之间的交互(而不是订阅事件)。然后,视图将该属性设置为 lambda,该 lambda 从比例中获取值并修改 UI。

我们目前遇到的问题是关于我们的视图的处理。如果当用户关闭视图时秤当前正在发送数据(并且我们位于 Action 处理程序内部)(此时我们在使用 CF 时强制执行 Dispose),则应用程序会挂起:Action lambda 永远不会完成运行并且尝试关闭 SerialPort 时,秤实例的 Dispose 会挂起。

  1. 与事件相比,在这种情况下处理类属性 Action 是否存在关键区别?

  2. 根据日志详细信息,当在视图上调用 Dispose 时,代码位于 Action lambda(修改一些 UI 元素)内。它们都在 UI 线程上——它们怎么能同时运行呢?是我昨晚没睡够吗?

  3. 有人在这里看到一些应该纠正的糟糕的架构决策吗?

谢谢。如果描述没有足够的意义,我可以尝试在这里获取一些代码示例。

c# lambda delegates compact-framework

5
推荐指数
1
解决办法
1532
查看次数

xxx.exe 中 0x782260ec 处的第一次机会异常:0xC0000005:访问冲突

我的应用程序在一段时间后崩溃,但我找不到任何模式。我能够得到崩溃转储。应用程序在 Windows Mobile 6.5 上运行。它是用 C# 编写的。它使用Imaging API、PInvoks 和大量线程。

当我使用 Visual Studio 2008 调试该转储时,在输出中显示“xxx.exe 中 0x782260ec 处的第一次机会异常:0xC0000005:访问冲突”

调用堆栈显示 2 个条目。但我无法匹配其中任何一个来从我的代码中调用。

Windbg.exe 表明此错误发生在“netcfagl3_5.dll”中

是否有一些特殊的技术来分析 Windows Mobile 的转储文件?

c# minidump compact-framework crash-dumps windows-mobile

5
推荐指数
1
解决办法
2338
查看次数

C#.NET套接字连接问题 - 通常只允许使用每个套接字地址

我有以下问题:

一旦我关闭我的WM6应用程序,然后尝试再次启动它我得到此错误: System.Net.Sockets.Socket.Bind(EndPoint localEP)通常只允许使用每个套接字地址(协议/网络地址/端口)在System.Net.Sockets.Socket.TcpListener.Start()...

我认为这是由于连接超时的时间间隔,所以我想关闭所有打开的连接并强制它创建一个新的连接,这是正确的继续方式还是有不同的方法来处理这个?

以下是用于开始监听的代码:

/// <summary>
/// Listens Asynchronously to Clients, creates a recieveMessageHandler to process the read.
/// 
/// Check WIKI, TODOS
/// </summary>
/// <returns></returns>
public void Listen()
{
    myTcpListener.Start();

    while (true)
    {
        //blocks until a client has connected to the server
        try
        {
            TcpClient myTcpClient = myTcpListener.AcceptTcpClient();
            DateTime now = DateTime.Now;
            //Test if it's necessary to create a client
            ClientConnection client = new ClientConnection(myTcpClient, new byte[myTcpClient.ReceiveBufferSize]);

            // Capture the specific client and pass it to …
Run Code Online (Sandbox Code Playgroud)

.net c# compact-framework windows-mobile

5
推荐指数
1
解决办法
1万
查看次数

在 windows mobile 6.5 中隐藏“确定”按钮

我有一个使用 2.0 ce 框架在 win mobile 6.5 上运行的 winmo 应用程序:

在某些表单上,我使用菜单栏来显示自定义菜单项,如下所示 带有自定义菜单项“更多”和“取消”的菜单栏

“更多”和“取消”按钮已连接事件,以便我实际上可以使表单按照我想要的方式运行。但问题是“确定”默认总是存在,只是关闭当前表单。我想完全删除它,使它看起来像这样

我根本不想显示“确定”:

但从我迄今为止的研究来看,这是不可能的。我遇到过删除整个菜单栏(我仍然需要其他按钮)或禁用“确定”按钮(但即使有它也会让用户感到困惑)的解决方案

这可能吗?

  • 删除 Windows“开始”按钮会很酷,但不是必需的

compact-framework menubar windows-mobile-6.5 c#-2.0

5
推荐指数
1
解决办法
1858
查看次数

在 .NET Compact Framework 3.5 上实现 TLS 1.2

我几乎花了一整天的时间来弄清楚如何最好地完成标题中提到的任务。

这是我到目前为止发现的:

  1. 至少有一个库为 .NET CF 提供了开箱即用的 TLS 1.2。缺点:他们收取许可证费用。如果有人对这个简单的解决方案感兴趣,Rebex Library

  2. 有几个 SSL/TLS 库允许与较低级别的服务器进行通信。我的方法是为我完成的 .NET Compact Framework 编译 BouncyCastle 库。

从这里开始,我找到了一篇文章,向我展示了如何实现 BouncyCastle 接口以及如何将各个部分组合在一起。有关详细信息,请参阅使用 BouncyCastle 库在 C# 中进行 HTTPS 调用。这几乎就是我的代码现在的样子。

我完成了与服务器的连接并发送了一个请求,我也得到了预期的响应。然后我想利用 HttpWebRequest 类,这样我就不必自己编写 HTTP 请求了。或者我是这么想的。不可能。HttpWebRequest 没有公共构造函数。因此我不能从那个类继承。例如,我也尝试使用 RestSharp 但这也仅依赖于 WebRequest 类。基本上所有可用的 HTTP 客户端都使用 Uri,然后自己打开一个流。似乎没有一个人接受一个已经打开的流并写入它或提供一些加密 API 来代替平台默认提供的内容(当然除了提到的 Rebex 库)。

所以我的问题是:是否有任何 HTTP 客户端可以将 HTTP 命令写入已经打开的流,或者至少给我一个我在其上设置的字符串表示?或者我是否必须自己编写类似的代码,即使已经有大量的这些实现?或者我完全错过了一个点,它可以更容易地解决?

c# compact-framework bouncycastle .net-cf-3.5

5
推荐指数
1
解决办法
1231
查看次数

Windows CE 5 中的 C# 应用程序最终崩溃

我使用 UDP 套接字在 C#(.NET Compact Framework 2.0)中编写了一个非常基本的应用程序。

该程序可以正常运行一段时间(一次最多几个星期),但最终总是失败。除了我的客户端无法重新连接之外,这个错误似乎会不利地杀死相关 NIC 的所有活动。一旦发生这种情况,我将无法再远程访问设备(使用 CE Remote Display)——这是我获得额外调试反馈的唯一方法。所以在这一点上,我不能 100% 确定应用程序本身是否崩溃,或者我是否通过套接字代码破坏了操作系统中的某些内容。

我已经实现了一个从未被引发的未处理的异常事件。我还有一些 try/catch 块,可以将异常消息输出到文本文件。我没有看到抛出任何异常。

/// 删除了旧的 TCP 代码。

客户端本身是简单的小型网关设备,配置为 UDP 服务器。这是一个我很少访问的远程系统,虽然我有一个测试控制器和网关单元,但条件并不相同,我还没有能够在我的最后重现这个问题。

TIA 获取任何反馈。

编辑:

我一直在运行我的测试台演示,并根据一些评论建议定期检查服务器上的 netstat。在 CE5 netstat 中不带 -a 标志,所以我一直在使用 -n (不确定这是否会告诉我我需要什么......)。我已经多次断开和重新连接我的客户端,通过拔下以太网等强制半开,并且 netstat 表只显示每个客户端的一个连接(在适当的端口)。

编辑2:

由于生产过程中消息传递的稀疏性,我将应用程序更改为无连接 UDP 消息传递,但我仍然遇到相同的行为(失败的时间大致相同)。在我的测试硬件上,应用程序以高消息率(每隔几秒一次)无限期地成功运行。但是,在消息不那么频繁的生产环境中,程序在运行大约 10 天后就会失败。我不认为不活动会很重要,但也许我错了?寻找我能得到的任何建议。

新的发送/接收代码:

    public void Send(string Message)
    {
        Socket udpClient = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
        EndPoint ep = new IPEndPoint(IPAddress.Parse(_ipAddress), _port);

        udpClient.Connect(ep);

        byte[] data = Encoding.ASCII.GetBytes(Message);
        // async send, sync receive
        udpClient.BeginSendTo(data, 0, data.Length, SocketFlags.None, …
Run Code Online (Sandbox Code Playgroud)

c# sockets udp compact-framework windows-ce

5
推荐指数
1
解决办法
231
查看次数