簡介

本文說明的 hotfix 彙總套件 2996568 使用 Microsoft.NET Framework 4.5]、 [.NET Framework 4.5.1,和 [.NET Framework 4.5.2。如需有關 hotfix 彙總套件可以解決問題的詳細資訊,請參閱 < 其他資訊=""> 一節。此 hotfix 彙總套件適用於下列作業系統︰

  • Windows Server 2008 R2 SP1

  • Windows 7 SP1

  • Windows Server 2008 SP2

  • Windows Vista SP2

解決方案

已經可以從 Microsoft 取得支援的 hotfix。不過,其旨在修正本文所描述的問題。它只適用於發生此特定問題的系統上。若要解決這個問題,請連絡 Microsoft 客戶支援服務 」 取得 hotfix。如需 Microsoft 客戶支援服務電話號碼以及支援費用的相關資訊的完整清單,請造訪下列 Microsoft 網站︰

http://support.microsoft.com/contactus/?ws=support注意 在特殊的情況下,如果 Microsoft 支援專業人員認為某特定更新程式可以解決您的問題時,可能就不會收取一般因支援電話所產生的費用。收取支援費用會套用,如果有其他支援問題是,不能限定的特定更新程式。

更多的資訊

先決條件

若要套用此 hotfix,您必須有.NET Framework 4.5]、 [.NET Framework 4.5.1 或 [.NET Framework 安裝的 4.5.2。

重新啟動需求

您必須重新啟動電腦,如果任何受影響的檔案正在使用中,會套用此 hotfix 之後。我們建議您套用此 hotfix 之前,關閉所有的.NET Framework 應用程式。

Hotfix 取代資訊

此 hotfix 套件不會取代先前發行的 hotfix 套件。

此 hotfix 彙總套件可以解決的問題

問題 1

當您使用.NET Framework 4.5]、 [.NET Framework 4.5.1 或 [.NET Framework 4.5.2 時,此 hotfix 解決System.IO.Packaging在下列兩個執行緒處理的問題。

  • 當您使用大型的包裝在個別執行緒上時,可能會發生死結。System.IO.Packaging會將IsolatedStorage用於大於 10 百萬位元組 (MB) 的封裝。當兩個或多個執行緒使用大型的包裝時,可能會發生死結,即使套件無關。死結涉及兩個執行緒。雖然其他正在等候另一個IsoloatedStorageFile類別的方法中,一個正在等候IsolatedStorageFile.Lock中。若要避免這個問題,在IsolatedStorageFile的System.IO.Packaging中加入同步處理來修正這個問題。

  • 當您將收到PackageProperties從不同的執行緒,在開啟的封裝,即使套件無關時,可能會發生例外狀況。最常見的呼叫堆疊因這如下所示︰System.Xml.XmlException: Unrecognized root element in Core Properties part. Line 2, position 2. atMS.Internal.IO.Packaging.PartBasedPackageProperties.ParseCorePropertyPart(PackagePart part) atSystem.IO.Packaging.Package.get_PackageProperties() System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. Parameter name: id atMS.Internal.IO.Packaging.PartBasedPackageProperties.ParseCorePropertyPart(PackagePart part) atSystem.IO.Packaging.Package.get_PackageProperties() 這個問題因共用的內部資源爭用,並提供每個封裝一份該資源已經解決。

問題 2

在收到多UIAutomation服務的要求時,Windows Presentation Foundation (WPF) 應用程式可能會使用大量的記憶體。記憶體屬於System.Threading命名空間中的物件。這包括System.Threading.CancellationTokenSource、 System.Threading.TimerQueueTimer、 System.Threading.Timer和其他幾個相關的類別。這些是當 WPF 收到UIAutomation活動的要求時,代表 WPF 配置的物件。是,在最後發行到要求的逾時期限到期為止 (通常是三分鐘)。如果要求快速到達,應用程式看起來像遺漏記憶體,或使用更多的記憶體,比起合理 (相當於 500 MB)。藉由要求完成時,而不等待逾時期限,請釋出物件可以解決這個問題。問題 3在 WPF 應用程式中,當您使用韓文輸入法 (IME),來輸入文字時的可編輯的下拉式方塊的 [文字] 屬性不會變更正確地在某些情況下。這個問題可能會出現不同的徵狀,並由所決定的應用程式 (或控制項的作者) 已經設定下拉式方塊。例如︰

  • 您輸入並離開索引標籤上 (或將焦點移到另一個控制項之後),就會還原下拉式方塊所顯示的文字,則為空字串,或在輸入前的值。

  • 下拉式方塊的TextSearch功能運作失常。不符合輸入後,前置詞或它比對不相關的項目。

藉由修改邏輯,以容納其他 Ime 規格稍有差異的韓文 IME 的時機,被解決這個問題。問題 4在 WPF 應用程式執行拖放操作的情況下,您在使用觸控式之後下, 一步的觸控筆勢會被忽略。藉由拖放作業完成時,還原的觸控輸入的處理常式的內部狀態來解決這個問題。如此一來,它會計算下一個觸控筆勢的位置正確。問題 5若要獲得顯著的效能,當您使用自訂的IAuthenticationModules,可以選擇性地啟用新的AuthenticationManager實作。注意如果程式碼不是執行緒安全,就會出現重大安全性風險。主要的行為變更位於PreAuthenticate和驗證方法。先前也不保證循序執行程式碼 (拍攝使用全域鎖定)。在新的實作中,沒有鎖定做,且客戶程式碼必須保證執行緒安全。此外,新的實作, PrefixLookup的快取大小可以透過登錄來控制。下列的登錄機碼可用來啟用及設定PrefixLookup的最大長度︰

  • 通用設定[HKEY_LOCAL_MACHINE\SOFTWARE[\Wow6432Node]\Microsoft\.NETFramework\v4.0.30319]"System.Net.AuthenticationManager.HighPerformance"=dword:00000001"System.Net.AuthenticationManager.PrefixLookupMaxCount"=dword:00010000

  • 本機應用程式組態[HKEY_LOCAL_MACHINE\SOFTWARE[\Wow6432Node]\Microsoft\.NETFramework\v4.0.30319\System.Net.AuthenticationManager.HighPerformance]"c:\myapp\myapp.exe"=dword:00000001[HKEY_LOCAL_MACHINE\SOFTWARE[\Wow6432Node]\Microsoft\.NETFramework\v4.0.30319\System.Net.AuthenticationManager.PrefixLookupMaxCount]"c:\myapp\myapp.exe"=dword:00010000

通用設定,其優先順序高於本機應用程式設定。可以混合全域和區域的應用程式設定。如果全域或區域的應用程式的 [ HighPerformance ] 設定設為DWORD 1,不會影響PrefixLookupMaxCount 。問題 6假設您執行.NET Framework 4.5]、 [.NET Framework 4.5.1 或 [.NET Framework 4.5.2 為基礎的應用程式。應用程式會在受管理的方法,從原生程式碼呼叫,再由參考傳遞 COM 介面,擲回例外狀況。在此情況下,應用程式可能會損毀。例如︰ VB6 所撰寫應用程式呼叫 C# DLL。假如 C# 程式碼中擲回例外狀況時,都會在 release 模式編譯的應用程式和 DLL,就會發生存取違規,,,應用程式當機。問題 7當工作流程以 XAML 為基礎專案時間較長的時間比預設租用時間 (5 分鐘) 的遠端物件所定義的建置 XAML 的工作時,您會收到類似下列的錯誤訊息︰

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Xaml.targets(193,5)︰ 錯誤 XC1000: XC1020︰ 在 XAML MSBuild 工作中發生建置錯誤: '物件' / cc8d6dcf_823f_4ce0_aaad_fb1d3f85e42b/mzr1is8dfgy6yqtpnhegu6pt_4.rem' 已經中斷,或不存在於伺服器。 '

您套用此 hotfix 之後,您可以藉由定義稱為XamlBuildTaskRemotingLeaseLifetimeInMinutes的環境變數來定義您自己的租用時間 (以分鐘為單位)。MSBuild 專案檔中設定環境變數,您必須在專案檔案中包含下列資訊︰<Project ...> <UsingTask TaskName="MySetEnv" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll" > <ParameterGroup> <Name Required="true" /> <Value Required="false" /> </ParameterGroup> <Task> <Code Type="Fragment" Language="cs">System.Environment.SetEnvironmentVariable(Name, Value);</Code> </Task> </UsingTask>...... <Target Name="BeforeBuild"> <MySetEnv Name="XamlBuildTaskRemotingLeaseLifetimeInMinutes" Value="1440" /> </Target> <Target Name="AfterBuild"> <MySetEnv Name="XamlBuildTaskRemotingLeaseLifetimeInMinutes" Value="" /> </Target></Project> 在這個範例中的工作名稱是MySetEnv。它可以將任何適用於 [任務名稱的字串。本範例將使用期時間設定為 1440 分鐘 (一天) 的專案中,建置之前,並建置之後將它設定為 null。如果有需要,以延長使用期時間的多個專案,每個專案就會需要這項設定。問題 8當您在網頁中使用 AJAX 回傳時,有時候回傳是重新導向至另一個 URL。您可以取得中透過HttpModule RedirectLocation HttpContext.Items["System.Web.UI.PageRequestManager:AsyncPostBackRedirectLocation"]。

需要更多協助嗎?

想要其他選項嗎?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。