Windows Mobile 開發(fā)常見問題集(二)

2010-08-28 10:49:27來源:西部e網作者:

1、Q:請問如何才能保證應用程序能夠及時地釋放系統(tǒng)資源?
  
  A:由于.NET Compact Framework所運行的移動設備,受限于CPU、內存、電源,因此其中的Garbage Collection時經過調整的,垃圾回收的速度比.NET Framework更快。通過調用Dispose()方法,可以立即釋放掉對象所占用的非托管資源。

2、Q:在Visual Studio中可以定義一個所有文件都可以使用的宏嗎?比如:#define AA,要求在所有的.cs文件中都可以使用#if AA public class A() #else public class B();

  A:可以。在VS 2005的解決方案資源管理器中,用鼠標右鍵單擊項目,選擇其屬性。在屬性對話框的Build頁中,可以找到conditional compilation symbol,在其中輸入AA,即可在該項目的所有C#源代碼文件中使用這個符號。

3、Q:可以將Smartphone應用程序轉換為Pocket PC應用程序嗎?

  A:可以。在.NET Compact Framework 2.0中,只要您沒有用到某些特殊的API,Pocket PC應用程序與Smartphone程序是可以互相轉換的,只需要在控件上做些調整即可。

4、Q:.Net Framework 2.0有沒有對Media coder/decoder的支持?開發(fā)第三方的媒體播放程序可以不依賴.Net CF2.0嗎?

  A:.NET Compact Framework 2.0本身可以開發(fā)Direct3D Mobile的應用程序。也可以在VS 2005中以C++開發(fā)Native Code的媒體播放程序,而無須依賴.NET Compact Framework 2.0。

5、Q:使用.Net開發(fā)的智能設備程序是否比用C語言開發(fā)的程序效率低很多?

  A:使用.NET開發(fā)的程序會比使用C語言開發(fā)的本地程序要慢一些,不過對于一般的應用軟件來說,下率不會差太多,除非是需要實時處理硬件或I/O的程序,必須要使用C語言進行開發(fā)之外,一般的應用程序用.NET Compact Framework開發(fā)即可,因為這樣可以獲得最好的靈活性和可移植性。

6、Q:用托管C++開發(fā)的應用程序執(zhí)行效率會不會比用C#開發(fā)的應用程序高?

  A:不會。由於托管C++與C#源代碼在經過編譯之后,都將成為IL代碼,由.NET Compact Framework來執(zhí)行,因此在效率上不會有差別。

7、Q:請問.NET Compact Framework 2.0對于使用不同CPU的移動設備支持好嗎?.NET Compact Framework 2.0在GSM應用方面有沒有增強?
  A:.NET Compact Framework具有Windows Mobile跨平臺的特性,因此開發(fā)時不需要考慮底層的OS、CPU和其它硬件因素。目前.NET Compact Framework對常見的CPU都能夠支持,例如ARM、MIPS、SH、x86等。另外在GSM應用方面,主要針對Smartphone的應用作了加強。
8、Q:請問MFC在Windows Mobile Development中處于什么地位?Douglas Boling寫的Programming Microsoft Windows CE .NET一書中好像并不推崇使用MFC開發(fā)Windows Mobile應用程序。

  A:MFC還是以本地C++的方式進行開發(fā),其特點是執(zhí)行效率高,但必須花費更多的心思在資源分配、回收等編程技巧上。如果使用.NET Compact Framework進行開發(fā),雖然執(zhí)行效率比本地程序略差,但整體而言,可移植性與靈活性都較好,而且不必為回收資源擔心,開發(fā)者能夠專注于真正重要的業(yè)務邏輯流程。

9、Q:.NET Compact Framework 2.0與1.0有什么區(qū)別?

  A:.NET Compact Framework 2.0主要針對1.0原有的控件及類庫進行了改善,提供了更多的支持,并新增了許多類型和控件,.NET Compact Framework 2.0更加接近.NET Framework,同時在效率上也相對1.0有所提升。

10、Q:在制作安裝程序的時候,如何在start->program菜單中生成程序的快捷方式?

  A:在VS 2005中建立Smart Device Cab Project,在File System頁面中,可以看到Application Folder,這就是Start->Program的位置,可以先建立Primary Output的快捷方式,然后將此快捷方式移到Programs Folder,并構建Cab文件即可。

11、Q:移動設備與WEB網頁設計有什么主要區(qū)別?

  A:Visual Studio開發(fā)環(huán)境中移動設備與Web設計是非常類似的 ,可以使用同樣的語言進行設計, 不同的只是能夠使用的類以及控件有所區(qū)別。

12、Q:.NET Compact Framework中可以實現(xiàn)鼠標的雙擊、右擊、中間鍵單擊等用戶事件嗎?

  A:運行Windows Mobile的設備沒有鼠標,所以這些事件也不存在。對于常用的右鍵彈出上下文相關菜單,在觸摸屏上一般用單擊并且按住一段時間來實現(xiàn)。

13、Q:Mobile應用程序的界面處理可以使用CSS樣式表嗎?

  A:不可以。

14、Q:Smartphone上面能夠支持橫屏幕嗎?

  A:不支持。

15、Q:如何在Pocket PC中調整控件的位置使得應用程序可以支持橫向屏幕?

  A:可通過設置控件的Anchor和Dock屬性來自適應屏幕。

16、Q:界面開發(fā)完成后,在移植方面需要注意些什么?

   A:一般來說,要移植到不同平臺上必需要重新設計用戶界面;可以重用的只是業(yè)務邏輯,不是用戶界面。
17、Q:我在移動開發(fā)過程中用到了很多控件,難以在一頁之內顯示,如何為它們添加一個滾動條?

  A:可以將這些控件放到一個Panel中,并設置其AutoScroll屬性為true即可;如果使用VS2005,拖拽數(shù)據源到窗體上時,會自動將所有控件包括在一個Panel里。

18、Q:TableAdapter在.NET Compact Framework 1.0中從未出現(xiàn)過,是新特性嗎?

  A:是的,TableAdapter是.NET Compact Framework 2.0中新增加的。

19、Q:SQL Mobile帶有像SQL Server那樣企業(yè)管理器嗎?Visual Studio 2005支持在桌面上直接查看SQL Mobile的數(shù)據庫嗎?

  A:您可以通過SQL Server 2005的企業(yè)管理器連接到SQL Mobile數(shù)據庫進行編輯。Visual Studio 2005也支持在桌面上創(chuàng)建或修改SQL Mobile數(shù)據庫文件。

20、Q:提交成功后如何取消保存?

  A:目前BindingSource尚不支持事務,因此提交成功后是沒有辦法再undo的。

21、Q:移動設備內存較小,填充DataSet是否有大小限制?

  A:DataSet在邏輯上并沒有對大小的限制。但是DataSet的大小必須小于當前前的可用內存,否則會有內存分配不成功的異常出現(xiàn)。

22、Q:如果數(shù)據源中的數(shù)據在顯示前需要處理(例如格式轉換),可以使用DataBinging嗎?

  A:BindingSource是直接將DataSet與控件進行關聯(lián),所以如果需要進行其他操作的話,就不能使用BindingSource;蛘撸梢栽谠L問數(shù)據庫后,先在DataSet里對需要轉換的數(shù)據進行必要的處理之后,再進行顯示。

23、Q:DataSet實際上在內存中產生了一套數(shù)據副本,如何解決版本控制的問題?

  A:DataSet本身不存在版本控制的問題。在把數(shù)據提交回SQL Mobile的時候,的確需要有一些機制來保證修改完成的數(shù)據應該是最新的,但是DataSet本身的數(shù)據結構是不會發(fā)生變化的。

24、Q:能否通過Pocket PC上的程序更新服務器上的數(shù)據庫信息?

  A:可以。可以使用SQL Mobile中的RDA或者是合并復制的方法和遠程SQL Server數(shù)據庫進行數(shù)據同步或更新。具體的實現(xiàn)可以參考SQL Server相關部分的文檔。

25、Q:SQL Mobile一定要要安裝在移動設備上嗎?

  A:是的。SQL Mobile需要安裝在Windows Mobile或者Windows CE設備上。

26、Q:SQL Moble支持存儲過程嗎?

  A:目前還不支持。

27、Q:SQL Mobile必須和應用程序部署在同一臺設備上嗎?可否遠程連接?它是否是一個文本數(shù)據庫?
 
  A:是的。SQL Mobile必須和應用程序部署在同一個設備上,現(xiàn)在還不支持遠程連接。SQL Mobile是一個文件數(shù)據庫,但不是一個文本數(shù)據庫。

28、Q:能不能在一些應用中以XML替代SQL的作用?

  A:可以的。XML的查詢效率比SQL Mobile要低,但是在數(shù)據比較少的情況下不需要安裝更多的組件,這是XML的一個優(yōu)勢。

29、Q: Tableadapter與DataAdapter之間有何區(qū)別?DataAdapter是多個TableAdapter的組合嗎?

  A:不是的,TableAdapter是對DataAdapter的一個擴展,TableAdapter本身包括了對應數(shù)據表的信息。TableAdapter完成從數(shù)據庫連接、執(zhí)行SQL語句到將結果填充到DataSet中的一個完整操作,而DataAdapter只支持數(shù)據填充的操作。

30、Q:做了SQL Moblie的sdf文件后,Publications后的數(shù)據庫表中會出現(xiàn)msrepl_tran_version或rowguid字段,這是為什么?

  A:這兩個字段是為了保證數(shù)據同步,由系統(tǒng)自動添加的,請不要進行修改。

31、Q:網上出了個Reflector反編譯工具,可以99%反編譯用C#開發(fā)的EXE和DLL,怎么才能更好地保護應用程序?

  A:目前大部分應用程序采用混淆和對關鍵字符串加密的方式,更好的方式可能還要繼續(xù)探討。

關鍵詞:dotnet

贊助商鏈接: