标签: compact-framework

Compact Framework/Threading - 在选择选项后,MessageBox显示在其他控件上

我正在开发一个应用程序,它可以从外部服务器上获取并安装一堆更新,并且需要一些线程帮助.用户遵循以下过程:

  • 点击按钮
  • 方法检查更新,返回计数.
  • 如果大于0,则询问用户是否要使用MessageBox.Show()进行安装.
  • 如果是,则它运行循环并在每个更新的run()方法上调用BeginInvoke()以在后台运行它.
  • 我的更新类有一些用于更新进度条等的事件.

进度条更新很好,但MessageBox未从屏幕上完全清除,因为更新循环在用户单击是后立即启动(请参见下面的屏幕截图).

  • 在更新循环开始之前,我该怎么做才能使消息框立即消失?
  • 我应该使用Threads而不是BeginInvoke()吗?
  • 我应该在一个单独的线程上进行初始更新检查并从该线程调用MessageBox.Show()吗?

// Button clicked event handler code...
DialogResult dlgRes = MessageBox.Show(
    string.Format("There are {0} updates available.\n\nInstall these now?", 
    um2.Updates.Count), "Updates Available", 
    MessageBoxButtons.YesNo, 
    MessageBoxIcon.Question, 
    MessageBoxDefaultButton.Button2
);

if (dlgRes == DialogResult.Yes)
{
    ProcessAllUpdates(um2); 
}

// Processes a bunch of items in a loop
private void ProcessAllUpdates(UpdateManager2 um2)
{
    for (int i = 0; i < um2.Updates.Count; i++)
    {
        Update2 update = um2.Updates[i];

        ProcessSingleUpdate(update);

        int percentComplete = Utilities.CalculatePercentCompleted(i, um2.Updates.Count);

        UpdateOverallProgress(percentComplete);
    }
}

// …
Run Code Online (Sandbox Code Playgroud)

c# multithreading compact-framework winforms

4
推荐指数
1
解决办法
4509
查看次数

401使用HttpWebRequest进行POST时(是的,我使用了Credentials)

我正在使用HttpWebRequest来下载XML,并将数据POST回"WebService"并在POST上获得401.

在创建请求时,我添加了凭据,现在尝试了凭据缓存并将PreAutenticate设置为True,仍然获得401!:(

观察路由器上的HTTP流量我设置get make一个未经身份验证的GET请求..它命中401然后进行经过身份验证的GET并被允许通过.当我观看POST时,我看到它点击了401 ...它甚至没有尝试经过身份验证的POST.

这只出现在手机上(WinMobile 6.1上的紧凑型框架3.5和2.0).相同的.exe可以在任何台式机上完美运行.

我错过了什么?请帮忙!

c# compact-framework http credentials httpwebrequest

4
推荐指数
1
解决办法
4685
查看次数

压缩和解压缩文件和文件夹

我需要使用C++/C#在Windows Mobile中压缩和解压缩目录hirarchy.什么是最简单的库?

我用谷歌搜索了很多次.我发现了一些东西,但我无法继续使用它.

如果你已经实施或者你知道一些相关的东西,请告诉我.

.net c# winapi compact-framework windows-mobile

4
推荐指数
1
解决办法
3097
查看次数

如何使用.NET Compact Framework 3.5在Win CE 6.0中创建全屏应用程序?

我们希望我们的应用程序以全屏模式运行,在Win CE 6.0驱动的设备上没有标题栏.该应用程序正在使用.NET Compact Framework 3.5(C#)开发.任何示例代码或指向文章的指针都表示赞赏.

c# compact-framework

4
推荐指数
2
解决办法
5634
查看次数

确定IP地址是否是蜂窝IP地址

在.NET Compact Framework中,设备可以有多个IP地址,我想找到一个不是来自Cellular连接的IP地址.目标是WiFi或以太网连接.

有没有办法做到这一点?

看起来像状态和通知经纪人会有办法做到这一点,但没有找到方法.

mobile compact-framework geolocation windows-mobile

4
推荐指数
1
解决办法
1901
查看次数

CF - TabControl - 如何使标签更大?

我有一个带标签页的标签控件(cf).

标签太小了...可以告诉我怎样才能让它们更大?

c# compact-framework tabcontrol tabpage

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

C# - 覆盖System命名空间中可用的某些类

我有一个需要在Compact .NET Framework 3.5和.NET Framework 3.5中编译的项目(实际上只有2个项目,只编译两者之间发生变化的选项).

问题是,CF .NET中缺少某些类,所以我手动创建它(并实现了.NET中可用的所有类成员)

一个例子:FtpWebRequest/FtpWebResponse类.

写这样的东西是不好的(如果是,为什么?):

#if CFNET35 // Only if we are in Compact Framework 3.5 mode
namespace System.Net
{
    public class FtpWebRequest : WebRequest
    {
        // ...
    }

    public class FtpWebResponse : WebResponse
    {
        // ...
    }
}
#endif
Run Code Online (Sandbox Code Playgroud)

我敢肯定,在CF.NET35中,这些方法永远不可用,我可以编写它吗?

我会写这个是为了避免在项目中使用我的库时发生名称冲突.

它允许我在其他项目中总是白using System.Net;求问我使用哪个框架...

谢谢 !


编辑

几个月后,我会评估我使用的策略.

如上所述,我通过进行条件编译来覆盖System(.Net)命名空间,所以我有两个DLL(一个用于CF.NET,一个用于.NET)

这也包括我使用这个DLL的所有应用程序都是双重的(每次都是CF.NET应用程序和一个包含相应库的.NET应用程序).

所以,这是一个坏主意,我有很多项目是双重的,而且.NET应用程序可以直接包含和使用CF.NET库的方式是不必要的.

此外,我还没有注意的是,如果一个.NET应用程序包含一个带有覆盖系统命名空间的CF.NET库,由于类名冲突,它的初始化将失败...

因此,提供通用接口的EPIC FAIL是管理此案例的最佳方式.

c# frameworks compact-framework namespaces

4
推荐指数
2
解决办法
3077
查看次数

一次只检查一个ListViewItem

我正在使用Compact Framework开发智能设备项目.

我有ListView几个可检查的ListViewItems:属性CheckBoxes是真的.我需要每次只检查一个ListViewItem,所以我订阅了这个ItemCheck活动:

// I need to know the last item checked
private ListViewItem lastItemChecked;

private void listView_ItemCheck(object sender, ItemCheckEventArgs e)
{
    if (lastItemChecked != null && lastItemChecked.Checked)
    {
        /* I need to do the following to prevent infinite recursion:
        i.e. subscribe and then unsubscribe the ItemCheck event. */
        listView.ItemCheck -= listView_ItemCheck;
        lastItemChecked.Checked = false;
        listView.ItemCheck += listView_ItemCheck;
    }

    lastItemChecked = listView.Items[e.Index];
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来阻止无限递归,从而Stack Overflow

c# events listview compact-framework winforms

4
推荐指数
1
解决办法
7303
查看次数

确定Windows Mobile/CE设备的型号和制造商

我们在几台设备(摩托罗拉,霍尼韦尔等)上运行我们用于Windows Mobile/CE的通用移动应用程序,并希望自动检测我们正在运行的设备.目前,我们需要配置要使用的设备服务(例如,用于扫描),但我们希望自动化该过程.

是否有可靠的方法来确定Windows Mobile/CE上的设备制造商和型号(例如"Motorola MC3190"或"Honeywell Dolphin 6100")?

我们已经尝试过的:

  • 获取OEM信息SystemParametersInfo(在某些设备上抛出异常)
  • 看看OpenNETCF API(似乎也使用SystemParametersInfo它)

我不想通过分析序列号,文件系统布局或CPU来猜测设备类型.

compact-framework windows-mobile windows-ce

4
推荐指数
1
解决办法
1884
查看次数

如何以编程方式确定SQL Server CE数据库中是否存在表?

回到我的.sdf文件中只有一个表时,这段代码运行正常:

const string sdfPath = @"\Program Files\duckbilled\Platypus.sdf";
string dataSource = string.Format("Data Source={0}", sdfPath);

if (!File.Exists(sdfPath))
{
    using (var engine = new SqlCeEngine(dataSource))
    {
        engine.CreateDatabase();
    }
    using (var connection = new SqlCeConnection(dataSource))
    {
        connection.Open();
        using (var command = new SqlCeCommand())
        {
            command.Connection = connection;
            command.CommandText =
                "CREATE TABLE Platydudes (Id int NOT NULL, BillSize smallint NOT NULL, Description nvarchar(255)";
            command.ExecuteNonQuery();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

...但现在我需要知道,不是数据库文件(Platypus.sdf)是否存在,而是该表/文件中是否存在特定的(例如Platydudes).有没有办法确定?

UPDATE

查询中的"IF NOT EXISTS"子句导致运行时异常.这段代码:

using (var connection = new …
Run Code Online (Sandbox Code Playgroud)

c# compact-framework windows-ce sql-server-ce windows-embedded-compact

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