2013-02-21 45 views
1

我使用Visual Studio 2010旗艦版創建WPF應用程序(.NET 4.0)和我正在經歷從pluralsight的教程.NET無擴展基礎無法使用query.ToObservable(),無法找到引用的DLL

_http://www.pluralsight.com/training/Courses/TableOfContents/reactive-extensions

一個WPF的例子顯示了一個簡單的按鈕和只讀文本框,當按鈕被點擊時使用文本框的文本是附加使用Enumerable linq查詢生成的數字。由於執行異步任務,應用程序保持響應而不會死機。

的應用程序添加System.CoreEx,System.Observable和System.Reactive

的基準和假設的代碼行就像是

var query = from number in Enumerable.Range(1, 25) select number; 

var observableQuery = query.ToObservable() // ToObservable() is not seen in intellisense 

因爲我無法找到並添加引用。

我試圖在谷歌搜索,還安裝

無擴展名從

http://www.microsoft.com/en-in/download/details.aspx?id=26649

http://msdn.microsoft.com/en-us/data/gg577610

,但我無法找到所有的dll文件。我發現System.Reactive在我的系統中

C:\ Program Files文件(x86)的\微軟無擴展SDK \ v1.0.10621 \ Binaries.NETFramework \ V4.0

,並同時在谷歌搜索我讀的地方該System.CoreEx現在包含在System.Reactive中,所以它不需要剩餘的是我無法找到的System.Observable。

那麼我在哪裏可以找到該DLL或我需要安裝什麼來獲得該DLL。我甚至嘗試通過nuget,但無法找到。

如果有人可以建議哪裏可以得到System.Observable DLL。

回答

1

由於版本的變化,我不得不面對問題,但最終在@Lee的幫助和指導下,我可以解決它。謝謝@李。我想把這些東西帶到這裏,以便對其他人有幫助。

這裏是XAML部分:

<Window x:Class="WpfApplication1.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="350" Width="525"> 
<StackPanel> 
    <Button Name="Start" Click="Start_Click">Start</Button> 
    <TextBox Name="Results" Height="250" VerticalScrollBarVisibility="Auto" IsReadOnly="True"/> 
</StackPanel> 

這裏是cs文件編碼:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data; 
using System.Windows.Documents; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Imaging; 
using System.Windows.Navigation; 
using System.Windows.Shapes; 
using System.Threading; 
using System.Reactive.Linq; 
using System.Reactive.Concurrency; 

namespace WpfApplication1 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
    public MainWindow() 
    { 
     InitializeComponent(); 
    } 

    private static string StringWait(string str) 
    { 
     Thread.Sleep(10); 
     return str; 
    } 

    private void Start_Click(object sender, RoutedEventArgs e) 
    { 
     var query = from number in Enumerable.Range(1, 10000000) 
        select StringWait(number.ToString()); 
     var observableQuery = query.ToObservable(Scheduler.Default); 
     observableQuery.ObserveOn(Dispatcher).Subscribe(n => Results.AppendText 
      (string.Format("{0}\n",n))); 

    } 
    } 
} 

最後這裏有我需要的參考資料:

http://i49.tinypic.com/vp7sk7.jpg

0

下載Silverlight工具包here:然後System.Reactive.dll添加引用(默認 - C:\ Program Files文件\微軟的SDK \ Silverlight的\ 3.0 \工具包\ Oct09 \ BIN)

+0

感謝Cris的回覆,但正如我上面提到的,如果你可以請再次參考我已經得到System.Reactive.dll在我的系統中 C:\ Program Files文件(x86)\ Microsoft Reactive Extensions SDK \ v1.0.10621 \ Binaries.NETFramework \ v4.0 我無法找到的是System.Observable dll – 2013-02-21 12:30:58

+0

您使用的是v1.0.10621,請嘗試使用v2.0作爲反應式擴展 – Cris 2013-02-21 12:41:29

0

ToObservable擴展方法在System.Reactive.Linq.Observable類中定義,該類在System.Reactive.Linq.dll中找到。因此,您需要添加一個對System.Reactive.Linq組件的引用,並在源文件中添加一個指令。

編輯:在回答您的意見,似乎要做到以下幾點:

IObservable<string> observableQuery = query.ToObservable(); 
observableQuery.subscribe(Results.AppendText); 

TextBoxBase.AppendText是可轉化成Action<string>,並且在ObservableExtension.Subscribe定義的擴展方法,它允許Action<string>認購到IObservable<T>OnNext方法。

要使用這個,你需要添加一個引用到System.Reactive.Core.dll,並在源文件中添加

using System; 

指令。

+0

感謝您的回覆,但在嘗試獲得錯誤時。這裏是屏幕截圖 http://i48.tinypic.com/1ys7a.jpg – 2013-02-22 06:13:12

+0

@ user1673411 - 您是否引用了該程序集的多個不同版本?確保你只有一個對'System.Reactive.Linq.dll'的引用。您可能還想清理並重新構建解決方案。 – Lee 2013-02-22 08:41:18

+0

好的,我發現並從已刪除錯誤的解決方案中刪除了System.Reactive.dll引用。但是,然後使用System.Reactive.Linq.dll和後來添加使用System.Reactive.Linq; ofcourse允許使用query.ToObservable(),但也許這不是我的例子所要求的部分,原因是下一行代碼給出了錯誤,因爲使用這些引用賦予它不同的含義,只需檢查來自 的屏幕截圖http:// i46 .tinypic.com/jsy81v.png 編碼'結果'是文本框的名稱,僅通過此代碼1至25數字在教程中成功打印,但由於錯誤我無法運行 – 2013-02-22 10:16:59

相關問題