├── global.json
├── tools
└── nuget
│ └── NuGet.exe
├── XamarinDispatchScheduler.Tests.UWP
├── Assets
│ ├── StoreLogo.png
│ ├── SplashScreen.scale-200.png
│ ├── LockScreenLogo.scale-200.png
│ ├── Square44x44Logo.scale-200.png
│ ├── Wide310x150Logo.scale-200.png
│ ├── Square150x150Logo.scale-200.png
│ └── Square44x44Logo.targetsize-24_altform-unplated.png
├── App.xaml
├── MainPage.xaml
├── MainPage.xaml.cs
├── Properties
│ ├── AssemblyInfo.cs
│ └── Default.rd.xml
├── Package.appxmanifest
├── App.xaml.cs
└── XamarinDispatchScheduler.Tests.UWP.csproj
├── XamarinDispatchScheduler.Tests.iOS
├── Resources
│ ├── Default.png
│ ├── Icon-76.png
│ ├── Default@2x.png
│ ├── Icon-60@2x.png
│ ├── Icon-60@3x.png
│ ├── Icon-76@2x.png
│ ├── Icon-Small.png
│ ├── Icon-Small-40.png
│ ├── Icon-Small@2x.png
│ ├── Icon-Small@3x.png
│ ├── Default-568h@2x.png
│ ├── Default-Portrait.png
│ ├── Icon-Small-40@2x.png
│ ├── Icon-Small-40@3x.png
│ ├── Default-Portrait@2x.png
│ └── LaunchScreen.storyboard
├── Entitlements.plist
├── Main.cs
├── AppDelegate.cs
├── Properties
│ └── AssemblyInfo.cs
├── Info.plist
└── XamarinDispatchScheduler.Tests.iOS.csproj
├── XamarinDispatchScheduler.Tests.Android
├── Resources
│ ├── drawable
│ │ └── icon.png
│ ├── mipmap-hdpi
│ │ └── Icon.png
│ ├── mipmap-mdpi
│ │ └── Icon.png
│ ├── drawable-hdpi
│ │ └── icon.png
│ ├── drawable-xhdpi
│ │ └── icon.png
│ ├── mipmap-xhdpi
│ │ └── Icon.png
│ ├── mipmap-xxhdpi
│ │ └── Icon.png
│ ├── mipmap-xxxhdpi
│ │ └── Icon.png
│ ├── drawable-xxhdpi
│ │ └── icon.png
│ ├── values
│ │ ├── Strings.xml
│ │ └── styles.xml
│ ├── layout
│ │ ├── Main.axml
│ │ ├── Toolbar.axml
│ │ └── Tabbar.axml
│ └── AboutResources.txt
├── Properties
│ ├── AndroidManifest.xml
│ └── AssemblyInfo.cs
├── Assets
│ └── AboutAssets.txt
├── MainActivity.cs
└── XamarinDispatchScheduler.Tests.Android.csproj
├── XamarinDispatchScheduler.Tests.WPF
├── App.config
├── Properties
│ ├── Settings.settings
│ ├── Settings.Designer.cs
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ └── Resources.resx
├── App.xaml.cs
├── App.xaml
├── MainWindow.xaml.cs
├── MainWindow.xaml
└── XamarinDispatchScheduler.Tests.WPF.csproj
├── XamarinDispatchScheduler.UITests
├── packages.config
├── AppInitializer.cs
├── Tests.cs
└── XamarinDispatchScheduler.UITests.csproj
├── XamarinDispatchScheduler.Tests
├── App.xaml
├── App.xaml.cs
├── XamarinDispatchScheduler.Tests.csproj
├── MainPage.xaml
└── MainPage.xaml.cs
├── XamarinDispatchScheduler
├── IPlatformImplementation.cs
├── Platforms
│ ├── netstandard
│ │ └── XamarinDispatcherScheduler.cs
│ ├── apple-common
│ │ └── PlatformImplementation.cs
│ ├── net45
│ │ └── XamarinDispatcherScheduler.cs
│ ├── android
│ │ └── PlatformImplementation.cs
│ ├── uap10.0
│ │ └── XamarinDispatcherScheduler.cs
│ └── xamarin-common
│ │ └── XamarinDispatcherScheduler.cs
└── XamarinDispatchScheduler.csproj
├── Nuget.md
├── version.json
├── XamarinDispatchScheduler.xUnit
├── XamarinDispatchScheduler.xUnit.csproj
└── BasicTest.cs
├── Readme.md
├── LICENSE
├── .gitattributes
├── .gitignore
├── XamarinDispatchScheduler.Tests.sln
└── XamarinDispatcher.sln
/global.json:
--------------------------------------------------------------------------------
1 | {
2 | "msbuild-sdks": {
3 | "MSBuild.Sdk.Extras": "1.6.46"
4 | }
5 | }
--------------------------------------------------------------------------------
/tools/nuget/NuGet.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PureWeen/XamarinDispatchScheduler/HEAD/tools/nuget/NuGet.exe
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.UWP/Assets/StoreLogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PureWeen/XamarinDispatchScheduler/HEAD/XamarinDispatchScheduler.Tests.UWP/Assets/StoreLogo.png
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.iOS/Resources/Default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PureWeen/XamarinDispatchScheduler/HEAD/XamarinDispatchScheduler.Tests.iOS/Resources/Default.png
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.iOS/Resources/Icon-76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PureWeen/XamarinDispatchScheduler/HEAD/XamarinDispatchScheduler.Tests.iOS/Resources/Icon-76.png
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.iOS/Resources/Default@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PureWeen/XamarinDispatchScheduler/HEAD/XamarinDispatchScheduler.Tests.iOS/Resources/Default@2x.png
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.iOS/Resources/Icon-60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PureWeen/XamarinDispatchScheduler/HEAD/XamarinDispatchScheduler.Tests.iOS/Resources/Icon-60@2x.png
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.iOS/Resources/Icon-60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PureWeen/XamarinDispatchScheduler/HEAD/XamarinDispatchScheduler.Tests.iOS/Resources/Icon-60@3x.png
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.iOS/Resources/Icon-76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PureWeen/XamarinDispatchScheduler/HEAD/XamarinDispatchScheduler.Tests.iOS/Resources/Icon-76@2x.png
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.iOS/Resources/Icon-Small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PureWeen/XamarinDispatchScheduler/HEAD/XamarinDispatchScheduler.Tests.iOS/Resources/Icon-Small.png
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.iOS/Resources/Icon-Small-40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PureWeen/XamarinDispatchScheduler/HEAD/XamarinDispatchScheduler.Tests.iOS/Resources/Icon-Small-40.png
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.iOS/Resources/Icon-Small@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PureWeen/XamarinDispatchScheduler/HEAD/XamarinDispatchScheduler.Tests.iOS/Resources/Icon-Small@2x.png
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.iOS/Resources/Icon-Small@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PureWeen/XamarinDispatchScheduler/HEAD/XamarinDispatchScheduler.Tests.iOS/Resources/Icon-Small@3x.png
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.iOS/Resources/Default-568h@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PureWeen/XamarinDispatchScheduler/HEAD/XamarinDispatchScheduler.Tests.iOS/Resources/Default-568h@2x.png
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.Android/Resources/drawable/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PureWeen/XamarinDispatchScheduler/HEAD/XamarinDispatchScheduler.Tests.Android/Resources/drawable/icon.png
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.iOS/Resources/Default-Portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PureWeen/XamarinDispatchScheduler/HEAD/XamarinDispatchScheduler.Tests.iOS/Resources/Default-Portrait.png
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.iOS/Resources/Icon-Small-40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PureWeen/XamarinDispatchScheduler/HEAD/XamarinDispatchScheduler.Tests.iOS/Resources/Icon-Small-40@2x.png
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.iOS/Resources/Icon-Small-40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PureWeen/XamarinDispatchScheduler/HEAD/XamarinDispatchScheduler.Tests.iOS/Resources/Icon-Small-40@3x.png
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.Android/Resources/mipmap-hdpi/Icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PureWeen/XamarinDispatchScheduler/HEAD/XamarinDispatchScheduler.Tests.Android/Resources/mipmap-hdpi/Icon.png
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.Android/Resources/mipmap-mdpi/Icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PureWeen/XamarinDispatchScheduler/HEAD/XamarinDispatchScheduler.Tests.Android/Resources/mipmap-mdpi/Icon.png
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.UWP/Assets/SplashScreen.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PureWeen/XamarinDispatchScheduler/HEAD/XamarinDispatchScheduler.Tests.UWP/Assets/SplashScreen.scale-200.png
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.iOS/Resources/Default-Portrait@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PureWeen/XamarinDispatchScheduler/HEAD/XamarinDispatchScheduler.Tests.iOS/Resources/Default-Portrait@2x.png
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.Android/Resources/drawable-hdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PureWeen/XamarinDispatchScheduler/HEAD/XamarinDispatchScheduler.Tests.Android/Resources/drawable-hdpi/icon.png
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.Android/Resources/drawable-xhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PureWeen/XamarinDispatchScheduler/HEAD/XamarinDispatchScheduler.Tests.Android/Resources/drawable-xhdpi/icon.png
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.Android/Resources/mipmap-xhdpi/Icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PureWeen/XamarinDispatchScheduler/HEAD/XamarinDispatchScheduler.Tests.Android/Resources/mipmap-xhdpi/Icon.png
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.Android/Resources/mipmap-xxhdpi/Icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PureWeen/XamarinDispatchScheduler/HEAD/XamarinDispatchScheduler.Tests.Android/Resources/mipmap-xxhdpi/Icon.png
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.Android/Resources/mipmap-xxxhdpi/Icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PureWeen/XamarinDispatchScheduler/HEAD/XamarinDispatchScheduler.Tests.Android/Resources/mipmap-xxxhdpi/Icon.png
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.UWP/Assets/LockScreenLogo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PureWeen/XamarinDispatchScheduler/HEAD/XamarinDispatchScheduler.Tests.UWP/Assets/LockScreenLogo.scale-200.png
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.UWP/Assets/Square44x44Logo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PureWeen/XamarinDispatchScheduler/HEAD/XamarinDispatchScheduler.Tests.UWP/Assets/Square44x44Logo.scale-200.png
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.UWP/Assets/Wide310x150Logo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PureWeen/XamarinDispatchScheduler/HEAD/XamarinDispatchScheduler.Tests.UWP/Assets/Wide310x150Logo.scale-200.png
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.Android/Resources/drawable-xxhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PureWeen/XamarinDispatchScheduler/HEAD/XamarinDispatchScheduler.Tests.Android/Resources/drawable-xxhdpi/icon.png
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.UWP/Assets/Square150x150Logo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PureWeen/XamarinDispatchScheduler/HEAD/XamarinDispatchScheduler.Tests.UWP/Assets/Square150x150Logo.scale-200.png
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.WPF/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.UWP/Assets/Square44x44Logo.targetsize-24_altform-unplated.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PureWeen/XamarinDispatchScheduler/HEAD/XamarinDispatchScheduler.Tests.UWP/Assets/Square44x44Logo.targetsize-24_altform-unplated.png
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.iOS/Entitlements.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.Android/Resources/values/Strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Hello World, Click Me!
4 | XamarinDispatchScheduler.Tests.Droid
5 |
6 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.WPF/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.UITests/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.UWP/App.xaml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests/App.xaml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler/IPlatformImplementation.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Xam.Reactive.Concurrency
4 | {
5 | public interface IPlatformImplementation
6 | {
7 | void BeginInvokeOnMainThread(Action action);
8 | bool OnMainThread();
9 | IDisposable StartInterval(TimeSpan interval, Action callback);
10 | IDisposable StartTimer(TimeSpan interval, Action callback);
11 | }
12 | }
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.Android/Resources/layout/Main.axml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.WPF/App.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Configuration;
4 | using System.Data;
5 | using System.Linq;
6 | using System.Threading.Tasks;
7 | using System.Windows;
8 |
9 | namespace XamarinDispatchScheduler.Tests.WPF
10 | {
11 | ///
12 | /// Interaction logic for App.xaml
13 | ///
14 | public partial class App : Application
15 | {
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.Android/Resources/layout/Toolbar.axml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.WPF/App.xaml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Nuget.md:
--------------------------------------------------------------------------------
1 | ## Xamarin Main Thread Dispatcher
2 |
3 |
4 | #### Examples
5 |
6 | ```
7 | Observable
8 | .Timer(TimeSpan.FromSeconds(2))
9 | .ObserveOn(XamarinDispatcherScheduler.Current)
10 | .Subscribe(_ =>
11 | {
12 | lblChangeMe.Text = "Changed";
13 | });
14 | ```
15 |
16 | ```
17 | //Helper to check if you're on the main thread
18 | if (!XamarinDispatcherScheduler.OnMainThread())
19 | {
20 | throw new Exception("Scheduler fail");
21 | }
22 | ```
23 |
24 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.Android/Properties/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/version.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "1.1",
3 | "publicReleaseRefSpec": [
4 | "^refs/heads/master$", // we release out of master
5 | "^refs/heads/develop$", // we release out of develop
6 | "^refs/heads/rel/\\d+\\.\\d+\\.\\d+" // we also release branches starting with rel/N.N.N
7 | ],
8 | "nugetPackageVersion":{
9 | "semVer": 2
10 | },
11 | "cloudBuild": {
12 | "setVersionVariables": true,
13 | "buildNumber": {
14 | "enabled": false
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.WPF/MainWindow.xaml.cs:
--------------------------------------------------------------------------------
1 | using Xamarin.Forms.Platform.WPF;
2 |
3 | namespace XamarinDispatchScheduler.Tests.WPF
4 | {
5 | ///
6 | /// Interaction logic for MainWindow.xaml
7 | ///
8 | public partial class MainWindow : FormsApplicationPage
9 | {
10 | public MainWindow()
11 | {
12 | InitializeComponent();
13 |
14 | Xamarin.Forms.Forms.Init();
15 | var app = new XamarinDispatchScheduler.Tests.App();
16 | LoadApplication(app);
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.Android/Resources/layout/Tabbar.axml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.iOS/Main.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 |
5 | using Foundation;
6 | using UIKit;
7 |
8 | namespace XamarinDispatchScheduler.Tests.iOS
9 | {
10 | public class Application
11 | {
12 | // This is the main entry point of the application.
13 | static void Main(string[] args)
14 | {
15 | // if you want to use a different Application Delegate class from "AppDelegate"
16 | // you can specify it here.
17 | UIApplication.Main(args, null, "AppDelegate");
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.xUnit/XamarinDispatchScheduler.xUnit.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net471
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.UWP/MainPage.xaml:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.Android/Assets/AboutAssets.txt:
--------------------------------------------------------------------------------
1 | Any raw assets you want to be deployed with your application can be placed in
2 | this directory (and child directories) and given a Build Action of "AndroidAsset".
3 |
4 | These files will be deployed with you package and will be accessible using Android's
5 | AssetManager, like this:
6 |
7 | public class ReadAsset : Activity
8 | {
9 | protected override void OnCreate (Bundle bundle)
10 | {
11 | base.OnCreate (bundle);
12 |
13 | InputStream input = Assets.Open ("my_asset.txt");
14 | }
15 | }
16 |
17 | Additionally, some Android functions will automatically load asset files:
18 |
19 | Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf");
20 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests/App.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Reactive.Concurrency;
5 | using System.Text;
6 | using Xamarin.Forms;
7 |
8 | namespace XamarinDispatchScheduler.Tests
9 | {
10 | public partial class App : Application
11 | {
12 | public App ()
13 | {
14 | InitializeComponent();
15 |
16 | MainPage = new XamarinDispatchScheduler.Tests.MainPage();
17 | }
18 |
19 | protected override void OnStart ()
20 | {
21 | }
22 |
23 | protected override void OnSleep ()
24 | {
25 | // Handle when your app sleeps
26 | }
27 |
28 | protected override void OnResume ()
29 | {
30 | // Handle when your app resumes
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.WPF/MainWindow.xaml:
--------------------------------------------------------------------------------
1 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.xUnit/BasicTest.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Reactive.Testing;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Linq;
5 | using System.Reactive.Concurrency;
6 | using System.Text;
7 | using System.Threading.Tasks;
8 | using Xam.Reactive.Concurrency;
9 | using Xunit;
10 |
11 | public class BasicTest
12 | {
13 | [Fact]
14 | public void Test()
15 | {
16 | bool executed = false;
17 | TestScheduler scheduler = new TestScheduler();
18 | XamarinDispatcherScheduler.Current = (IScheduler)scheduler;
19 | XamarinDispatcherScheduler
20 | .Current
21 | .Schedule( () =>
22 | {
23 | executed = true;
24 | });
25 |
26 | Assert.Equal(false, executed);
27 | scheduler.AdvanceBy(1000);
28 | Assert.Equal(true, executed);
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.UITests/AppInitializer.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.IO;
3 | using System.Linq;
4 | using Xamarin.UITest;
5 | using Xamarin.UITest.Queries;
6 |
7 | namespace XamarinDispatchScheduler.UITests
8 | {
9 | public class AppInitializer
10 | {
11 | public static IApp StartApp(Platform platform)
12 | {
13 | if (platform == Platform.Android)
14 | {
15 | return ConfigureApp
16 | .Android
17 | .InstalledApp("com.XamarinDispatchScheduler.XamarinDispatchScheduler")
18 | //.ApkFile("../../../XamarinDispatchScheduler.Tests.Android/bin/Release/com.XamarinDispatchScheduler.XamarinDispatchScheduler.apk")
19 | .StartApp();
20 | }
21 |
22 | return ConfigureApp
23 | .iOS
24 | .StartApp();
25 | }
26 | }
27 | }
28 |
29 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.Android/MainActivity.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | using Android.App;
4 | using Android.Content.PM;
5 | using Android.Runtime;
6 | using Android.Views;
7 | using Android.Widget;
8 | using Android.OS;
9 |
10 | namespace XamarinDispatchScheduler.Tests.Droid
11 | {
12 | [Activity(Label = "XamarinDispatchScheduler.Tests", Icon = "@drawable/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
13 | public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
14 | {
15 | protected override void OnCreate(Bundle bundle)
16 | {
17 |
18 | TabLayoutResource = Resource.Layout.Tabbar;
19 | ToolbarResource = Resource.Layout.Toolbar;
20 |
21 | base.OnCreate(bundle);
22 |
23 | global::Xamarin.Forms.Forms.Init(this, bundle);
24 | LoadApplication(new App());
25 | }
26 | }
27 | }
28 |
29 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests/XamarinDispatchScheduler.Tests.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | *.xaml
19 |
20 |
21 | *.xaml
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/Readme.md:
--------------------------------------------------------------------------------
1 | ## Xamarin Main Thread Dispatcher
2 | [Nuget](https://www.nuget.org/packages/Xam.Reactive.DispatchScheduler/)
3 |
4 | #### Examples
5 |
6 | ```
7 | Observable
8 | .Timer(TimeSpan.FromSeconds(2))
9 | .ObserveOn(XamarinDispatcherScheduler.Current)
10 | .Subscribe(_ =>
11 | {
12 | lblChangeMe.Text = "Changed";
13 | });
14 | ```
15 |
16 | ```
17 | //Helper to check if you're on the main thread
18 | if (!XamarinDispatcherScheduler.OnMainThread())
19 | {
20 | throw new Exception("Scheduler fail");
21 | }
22 | ```
23 |
24 |
25 | I borrowed from the [CoreDispatchScheduler From Rx.NET](https://github.com/Reactive-Extensions/Rx.NET/blob/ba98e6254c9a2f841cbc4169bf38590b133c8064/Rx.NET/Source/src/System.Reactive/Platforms/Windows/Concurrency/CoreDispatcherScheduler.cs) and
26 | the [Xamarin.Forms BeginInvokeOnMainThread](https://github.com/xamarin/Xamarin.Forms/blob/d3d59ee4f0b3098457e1debe8d7b03d0d0061a53/Xamarin.Forms.Platform.iOS/Forms.cs) implementations
27 | to create a combined Scheduler that will work Cross Platform for Xamarin.
28 |
29 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.UWP/MainPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.IO;
4 | using System.Linq;
5 | using System.Runtime.InteropServices.WindowsRuntime;
6 | using Windows.Foundation;
7 | using Windows.Foundation.Collections;
8 | using Windows.UI.Xaml;
9 | using Windows.UI.Xaml.Controls;
10 | using Windows.UI.Xaml.Controls.Primitives;
11 | using Windows.UI.Xaml.Data;
12 | using Windows.UI.Xaml.Input;
13 | using Windows.UI.Xaml.Media;
14 | using Windows.UI.Xaml.Navigation;
15 |
16 | // The Blank Page item template is documented at https://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409
17 |
18 | namespace XamarinDispatchScheduler.Tests.UWP
19 | {
20 | ///
21 | /// An empty page that can be used on its own or navigated to within a Frame.
22 | ///
23 | public sealed partial class MainPage
24 | {
25 | public MainPage()
26 | {
27 |
28 | this.InitializeComponent();
29 |
30 | var app = new XamarinDispatchScheduler.Tests.App();
31 | LoadApplication(app);
32 | }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017 Shane Neuville
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.UWP/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("XamarinDispatchScheduler.Tests.UWP")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("XamarinDispatchScheduler.Tests.UWP")]
13 | [assembly: AssemblyCopyright("Copyright © 2017")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Version information for an assembly consists of the following four values:
18 | //
19 | // Major Version
20 | // Minor Version
21 | // Build Number
22 | // Revision
23 | //
24 | // You can specify all the values or you can default the Build and Revision Numbers
25 | // by using the '*' as shown below:
26 | // [assembly: AssemblyVersion("1.0.*")]
27 | [assembly: AssemblyVersion("1.0.0.0")]
28 | [assembly: AssemblyFileVersion("1.0.0.0")]
29 | [assembly: ComVisible(false)]
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.WPF/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace XamarinDispatchScheduler.Tests.WPF.Properties
12 | {
13 |
14 |
15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
18 | {
19 |
20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
21 |
22 | public static Settings Default
23 | {
24 | get
25 | {
26 | return defaultInstance;
27 | }
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.iOS/AppDelegate.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 |
5 | using Foundation;
6 | using UIKit;
7 |
8 | namespace XamarinDispatchScheduler.Tests.iOS
9 | {
10 | // The UIApplicationDelegate for the application. This class is responsible for launching the
11 | // User Interface of the application, as well as listening (and optionally responding) to
12 | // application events from iOS.
13 | [Register("AppDelegate")]
14 | public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
15 | {
16 | //
17 | // This method is invoked when the application has loaded and is ready to run. In this
18 | // method you should instantiate the window, load the UI into it and then make the window
19 | // visible.
20 | //
21 | // You have 17 seconds to return from this method, or iOS will terminate your application.
22 | //
23 | public override bool FinishedLaunching(UIApplication app, NSDictionary options)
24 | {
25 | global::Xamarin.Forms.Forms.Init();
26 | LoadApplication(new App());
27 | #if ENABLE_TEST_CLOUD
28 | Xamarin.Calabash.Start ();
29 | #endif
30 |
31 | return base.FinishedLaunching(app, options);
32 | }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.UWP/Properties/Default.rd.xml:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.Android/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 | using Android.App;
5 |
6 | // General Information about an assembly is controlled through the following
7 | // set of attributes. Change these attribute values to modify the information
8 | // associated with an assembly.
9 | [assembly: AssemblyTitle("XamarinDispatchScheduler.Tests.Android")]
10 | [assembly: AssemblyDescription("")]
11 | [assembly: AssemblyConfiguration("")]
12 | [assembly: AssemblyCompany("")]
13 | [assembly: AssemblyProduct("XamarinDispatchScheduler.Tests.Android")]
14 | [assembly: AssemblyCopyright("Copyright © 2014")]
15 | [assembly: AssemblyTrademark("")]
16 | [assembly: AssemblyCulture("")]
17 | [assembly: ComVisible(false)]
18 |
19 | // Version information for an assembly consists of the following four values:
20 | //
21 | // Major Version
22 | // Minor Version
23 | // Build Number
24 | // Revision
25 | //
26 | // You can specify all the values or you can default the Build and Revision Numbers
27 | // by using the '*' as shown below:
28 | // [assembly: AssemblyVersion("1.0.*")]
29 | [assembly: AssemblyVersion("1.0.0.0")]
30 | [assembly: AssemblyFileVersion("1.0.0.0")]
31 |
32 | // Add some common permissions, these can be removed if not needed
33 | [assembly: UsesPermission(Android.Manifest.Permission.Internet)]
34 | [assembly: UsesPermission(Android.Manifest.Permission.WriteExternalStorage)]
35 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler/Platforms/netstandard/XamarinDispatcherScheduler.cs:
--------------------------------------------------------------------------------
1 |
2 | using System;
3 | using System.Reactive.Concurrency;
4 |
5 | namespace Xam.Reactive.Concurrency
6 | {
7 | public sealed class XamarinDispatcherScheduler : LocalScheduler, ISchedulerPeriodic
8 | {
9 | static IScheduler _scheduler;
10 | public static IScheduler Current
11 | {
12 | get
13 | {
14 | return _scheduler ?? throw new Exception("Please install nuget into platform project");
15 | }
16 | set
17 | {
18 | _scheduler = value;
19 | }
20 | }
21 |
22 | public override IDisposable Schedule(TState state, TimeSpan dueTime, Func action)
23 | {
24 | _ = _scheduler ?? throw new Exception("Please install nuget into platform project");
25 | return _scheduler.Schedule(state, dueTime, action);
26 | }
27 |
28 | public IDisposable SchedulePeriodic(TState state, TimeSpan period, Func action)
29 | {
30 | _ = _scheduler ?? throw new Exception("Please install nuget into platform project");
31 | return _scheduler.SchedulePeriodic(state, period, action);
32 | }
33 |
34 | public static bool OnMainThread()
35 | {
36 | _ = _scheduler ?? throw new Exception("Please install nuget into platform project");
37 | return false;
38 | }
39 | }
40 | }
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests/MainPage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
15 |
20 |
21 |
25 |
26 |
30 |
31 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.Android/Resources/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
26 |
27 |
30 |
31 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.iOS/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("XamarinDispatchScheduler.Tests.iOS")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("XamarinDispatchScheduler.Tests.iOS")]
13 | [assembly: AssemblyCopyright("Copyright © 2014")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("72bdc44f-c588-44f3-b6df-9aace7daafdd")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.UWP/Package.appxmanifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
13 |
14 |
15 |
16 |
17 | XamarinDispatchScheduler.Tests.UWP
18 | shane
19 | Assets\StoreLogo.png
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
34 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler/Platforms/apple-common/PlatformImplementation.cs:
--------------------------------------------------------------------------------
1 | using Foundation;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Linq;
5 | using System.Reactive.Disposables;
6 | using System.Text;
7 | using System.Threading.Tasks;
8 |
9 | namespace Xam.Reactive.Concurrency
10 | {
11 | //https://github.com/xamarin/Xamarin.Forms/blob/d3d59ee4f0b3098457e1debe8d7b03d0d0061a53/Xamarin.Forms.Platform.iOS/Forms.cs
12 | public class PlatformImplementation : IPlatformImplementation
13 | {
14 | public IDisposable StartInterval(TimeSpan interval, Action callback)
15 | {
16 | NSTimer timer = NSTimer.CreateRepeatingTimer(interval, t =>
17 | {
18 | callback();
19 | });
20 |
21 | NSRunLoop.Main.AddTimer(timer, NSRunLoopMode.Common);
22 | return Disposable.Create(() =>
23 | {
24 | timer.Invalidate();
25 | timer.Dispose();
26 | });
27 | }
28 |
29 | public IDisposable StartTimer(TimeSpan interval, Action callback)
30 | {
31 | NSTimer timer = NSTimer.CreateTimer(interval, t =>
32 | {
33 | if (t.IsValid)
34 | {
35 | callback();
36 | }
37 | });
38 |
39 | NSRunLoop.Main.AddTimer(timer, NSRunLoopMode.Common);
40 | return Disposable.Create(() =>
41 | {
42 | timer.Invalidate();
43 | timer.Dispose();
44 | });
45 | }
46 |
47 | public void BeginInvokeOnMainThread(Action action)
48 | {
49 | NSRunLoop.Main.BeginInvokeOnMainThread(action.Invoke);
50 | }
51 |
52 | public bool OnMainThread()
53 | {
54 | return NSThread.Current.IsMainThread;
55 | }
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.iOS/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | UIDeviceFamily
6 |
7 | 1
8 | 2
9 |
10 | UISupportedInterfaceOrientations
11 |
12 | UIInterfaceOrientationPortrait
13 | UIInterfaceOrientationLandscapeLeft
14 | UIInterfaceOrientationLandscapeRight
15 |
16 | UISupportedInterfaceOrientations~ipad
17 |
18 | UIInterfaceOrientationPortrait
19 | UIInterfaceOrientationPortraitUpsideDown
20 | UIInterfaceOrientationLandscapeLeft
21 | UIInterfaceOrientationLandscapeRight
22 |
23 | MinimumOSVersion
24 | 11.1
25 | CFBundleDisplayName
26 | XamarinDispatchScheduler.Tests
27 | CFBundleIdentifier
28 | com.yourcompany.XamarinDispatchScheduler.Tests
29 | CFBundleVersion
30 | 1.0
31 | CFBundleIconFiles
32 |
33 | Icon-60@2x
34 | Icon-60@3x
35 | Icon-76
36 | Icon-76@2x
37 | Default
38 | Default@2x
39 | Default-568h@2x
40 | Default-Portrait
41 | Default-Portrait@2x
42 | Icon-Small-40
43 | Icon-Small-40@2x
44 | Icon-Small-40@3x
45 | Icon-Small
46 | Icon-Small@2x
47 | Icon-Small@3x
48 |
49 | UILaunchStoryboardName
50 | LaunchScreen
51 | CFBundleName
52 | XamarinDispatchScheduler.Tests
53 |
54 |
55 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.Android/Resources/AboutResources.txt:
--------------------------------------------------------------------------------
1 | Images, layout descriptions, binary blobs and string dictionaries can be included
2 | in your application as resource files. Various Android APIs are designed to
3 | operate on the resource IDs instead of dealing with images, strings or binary blobs
4 | directly.
5 |
6 | For example, a sample Android app that contains a user interface layout (main.xml),
7 | an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png)
8 | would keep its resources in the "Resources" directory of the application:
9 |
10 | Resources/
11 | drawable-hdpi/
12 | icon.png
13 |
14 | drawable-ldpi/
15 | icon.png
16 |
17 | drawable-mdpi/
18 | icon.png
19 |
20 | layout/
21 | main.xml
22 |
23 | values/
24 | strings.xml
25 |
26 | In order to get the build system to recognize Android resources, set the build action to
27 | "AndroidResource". The native Android APIs do not operate directly with filenames, but
28 | instead operate on resource IDs. When you compile an Android application that uses resources,
29 | the build system will package the resources for distribution and generate a class called
30 | "Resource" that contains the tokens for each one of the resources included. For example,
31 | for the above Resources layout, this is what the Resource class would expose:
32 |
33 | public class Resource {
34 | public class drawable {
35 | public const int icon = 0x123;
36 | }
37 |
38 | public class layout {
39 | public const int main = 0x456;
40 | }
41 |
42 | public class strings {
43 | public const int first_string = 0xabc;
44 | public const int second_string = 0xbcd;
45 | }
46 | }
47 |
48 | You would then use R.drawable.icon to reference the drawable/icon.png file, or Resource.layout.main
49 | to reference the layout/main.xml file, or Resource.strings.first_string to reference the first
50 | string in the dictionary file values/strings.xml.
51 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.UITests/Tests.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.IO;
4 | using System.Linq;
5 | using NUnit.Framework;
6 | using Xamarin.UITest;
7 | using Xamarin.UITest.Queries;
8 |
9 | namespace XamarinDispatchScheduler.UITests
10 | {
11 | [TestFixture(Platform.Android)]
12 | [TestFixture(Platform.iOS)]
13 | public class Tests
14 | {
15 | IApp app;
16 | Platform platform;
17 |
18 | public Tests(Platform platform)
19 | {
20 | this.platform = platform;
21 | }
22 |
23 | [SetUp]
24 | public void BeforeEachTest()
25 | {
26 | app = AppInitializer.StartApp(platform);
27 | }
28 |
29 | [Test]
30 | public void WaitForChangeMeToBeSet()
31 | {
32 |
33 | app.WaitForElement(x => x.Marked("lblChangeMe"));
34 | app.WaitForElement(x => x.Marked("Changed"));
35 | }
36 |
37 | [Test]
38 | public void SlowlyScheduled()
39 | {
40 |
41 | app.WaitForElement(x => x.Marked("lblSlowScheduler"));
42 | app.WaitForElement(x => x.Marked("slowly scheduled"));
43 | }
44 |
45 |
46 | [Test]
47 | public void TimerSchedule()
48 | {
49 | app.WaitForElement(x => x.Marked("lblTimer"));
50 |
51 | List matches = new List();
52 |
53 | for (int i= 0; i < 3; i++)
54 | {
55 | matches.Add(
56 | app.Query("lblTimer")
57 | .First()
58 | .Text
59 | );
60 |
61 | Assert.AreEqual(matches.Count, matches.Distinct().Count());
62 | System.Threading.Thread.Sleep(3000);
63 | }
64 |
65 |
66 | app.Tap("btnStop");
67 |
68 | matches.Clear();
69 | for (int i = 0; i < 3; i++)
70 | {
71 | matches.Add(
72 | app.Query("lblTimer")
73 | .First()
74 | .Text
75 | );
76 |
77 | Assert.AreEqual(1, matches.Distinct().Count());
78 | System.Threading.Thread.Sleep(3000);
79 | }
80 | }
81 | }
82 | }
83 |
84 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler/Platforms/net45/XamarinDispatcherScheduler.cs:
--------------------------------------------------------------------------------
1 |
2 | using System;
3 | using System.Reactive.Concurrency;
4 | using System.Reactive.Disposables;
5 | using System.Runtime.ExceptionServices;
6 | using System.Threading;
7 | using System.Windows.Threading;
8 |
9 | namespace Xam.Reactive.Concurrency
10 | {
11 | public sealed class XamarinDispatcherScheduler : LocalScheduler, ISchedulerPeriodic
12 | {
13 | DispatcherScheduler _dispatchScheduler;
14 |
15 | public XamarinDispatcherScheduler(DispatcherScheduler dispatchScheduler) =>
16 | _dispatchScheduler = dispatchScheduler;
17 |
18 | public XamarinDispatcherScheduler(Dispatcher dispatcher) =>
19 | _dispatchScheduler = new DispatcherScheduler(dispatcher);
20 |
21 | public bool HasThreadAccess =>
22 | _dispatchScheduler.Dispatcher.CheckAccess();
23 |
24 |
25 | public override IDisposable Schedule(TState state, TimeSpan dueTime, Func action) =>
26 | _dispatchScheduler.Schedule(state, dueTime, action);
27 |
28 |
29 | public IDisposable SchedulePeriodic(TState state, TimeSpan period, Func action) =>
30 | _dispatchScheduler.SchedulePeriodic(state, period, action);
31 |
32 |
33 | #region singleton
34 |
35 | static Lazy _scheduler;
36 | static IScheduler _customScheduler;
37 |
38 | static XamarinDispatcherScheduler()
39 | {
40 | _scheduler = new Lazy(() =>
41 | {
42 | return new XamarinDispatcherScheduler(System.Windows.Application.Current.Dispatcher);
43 | });
44 | }
45 |
46 | public static IScheduler Current
47 | {
48 | get
49 | {
50 | return _customScheduler ?? _scheduler.Value;
51 | }
52 | set
53 | {
54 | _customScheduler = value;
55 | }
56 | }
57 |
58 | public static bool OnMainThread()
59 | {
60 | if (_customScheduler != null) return false;
61 |
62 | return
63 | _scheduler
64 | .Value
65 | .HasThreadAccess;
66 | }
67 |
68 | #endregion
69 |
70 | }
71 | }
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.WPF/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Resources;
3 | using System.Runtime.CompilerServices;
4 | using System.Runtime.InteropServices;
5 | using System.Windows;
6 |
7 | // General Information about an assembly is controlled through the following
8 | // set of attributes. Change these attribute values to modify the information
9 | // associated with an assembly.
10 | [assembly: AssemblyTitle("XamarinDispatchScheduler.Tests.WPF")]
11 | [assembly: AssemblyDescription("")]
12 | [assembly: AssemblyConfiguration("")]
13 | [assembly: AssemblyCompany("")]
14 | [assembly: AssemblyProduct("XamarinDispatchScheduler.Tests.WPF")]
15 | [assembly: AssemblyCopyright("Copyright © 2018")]
16 | [assembly: AssemblyTrademark("")]
17 | [assembly: AssemblyCulture("")]
18 |
19 | // Setting ComVisible to false makes the types in this assembly not visible
20 | // to COM components. If you need to access a type in this assembly from
21 | // COM, set the ComVisible attribute to true on that type.
22 | [assembly: ComVisible(false)]
23 |
24 | //In order to begin building localizable applications, set
25 | //CultureYouAreCodingWith in your .csproj file
26 | //inside a . For example, if you are using US english
27 | //in your source files, set the to en-US. Then uncomment
28 | //the NeutralResourceLanguage attribute below. Update the "en-US" in
29 | //the line below to match the UICulture setting in the project file.
30 |
31 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
32 |
33 |
34 | [assembly: ThemeInfo(
35 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
36 | //(used if a resource is not found in the page,
37 | // or application resource dictionaries)
38 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
39 | //(used if a resource is not found in the page,
40 | // app, or any theme specific resource dictionaries)
41 | )]
42 |
43 |
44 | // Version information for an assembly consists of the following four values:
45 | //
46 | // Major Version
47 | // Minor Version
48 | // Build Number
49 | // Revision
50 | //
51 | // You can specify all the values or you can default the Build and Revision Numbers
52 | // by using the '*' as shown below:
53 | // [assembly: AssemblyVersion("1.0.*")]
54 | [assembly: AssemblyVersion("1.0.0.0")]
55 | [assembly: AssemblyFileVersion("1.0.0.0")]
56 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | # Set default behavior to automatically normalize line endings.
3 | ###############################################################################
4 | * text=auto
5 |
6 | ###############################################################################
7 | # Set default behavior for command prompt diff.
8 | #
9 | # This is need for earlier builds of msysgit that does not have it on by
10 | # default for csharp files.
11 | # Note: This is only used by command line
12 | ###############################################################################
13 | #*.cs diff=csharp
14 |
15 | ###############################################################################
16 | # Set the merge driver for project and solution files
17 | #
18 | # Merging from the command prompt will add diff markers to the files if there
19 | # are conflicts (Merging from VS is not affected by the settings below, in VS
20 | # the diff markers are never inserted). Diff markers may cause the following
21 | # file extensions to fail to load in VS. An alternative would be to treat
22 | # these files as binary and thus will always conflict and require user
23 | # intervention with every merge. To do so, just uncomment the entries below
24 | ###############################################################################
25 | #*.sln merge=binary
26 | #*.csproj merge=binary
27 | #*.vbproj merge=binary
28 | #*.vcxproj merge=binary
29 | #*.vcproj merge=binary
30 | #*.dbproj merge=binary
31 | #*.fsproj merge=binary
32 | #*.lsproj merge=binary
33 | #*.wixproj merge=binary
34 | #*.modelproj merge=binary
35 | #*.sqlproj merge=binary
36 | #*.wwaproj merge=binary
37 |
38 | ###############################################################################
39 | # behavior for image files
40 | #
41 | # image files are treated as binary by default.
42 | ###############################################################################
43 | #*.jpg binary
44 | #*.png binary
45 | #*.gif binary
46 |
47 | ###############################################################################
48 | # diff behavior for common document formats
49 | #
50 | # Convert binary document formats to text before diffing them. This feature
51 | # is only available from the command line. Turn it on by uncommenting the
52 | # entries below.
53 | ###############################################################################
54 | #*.doc diff=astextplain
55 | #*.DOC diff=astextplain
56 | #*.docx diff=astextplain
57 | #*.DOCX diff=astextplain
58 | #*.dot diff=astextplain
59 | #*.DOT diff=astextplain
60 | #*.pdf diff=astextplain
61 | #*.PDF diff=astextplain
62 | #*.rtf diff=astextplain
63 | #*.RTF diff=astextplain
64 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.iOS/Resources/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler/Platforms/android/PlatformImplementation.cs:
--------------------------------------------------------------------------------
1 | using Android.OS;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Linq;
5 | using System.Reactive.Disposables;
6 | using System.Text;
7 | using System.Threading;
8 | using System.Threading.Tasks;
9 |
10 | //https://github.com/xamarin/Xamarin.Forms/blob/d3d59ee4f0b3098457e1debe8d7b03d0d0061a53/Xamarin.Forms.Platform.Android/Forms.cs
11 | namespace Xam.Reactive.Concurrency
12 | {
13 | public class PlatformImplementation : IPlatformImplementation
14 | {
15 | Handler s_handler;
16 | Handler getHandler()
17 | {
18 | if (s_handler == null || s_handler.Looper != Looper.MainLooper)
19 | {
20 | s_handler = new Handler(Looper.MainLooper);
21 | }
22 | return s_handler;
23 | }
24 |
25 | public void BeginInvokeOnMainThread(Action action) =>
26 | getHandler()
27 | .Post(action);
28 |
29 |
30 | public IDisposable StartTimer(TimeSpan interval, Action callback)
31 | {
32 |
33 | var handler = getHandler();
34 | object token = new object();
35 |
36 | handler.PostDelayed(() =>
37 | {
38 | var t = Interlocked.Exchange(ref token, null);
39 | if (t != null)
40 | {
41 | callback();
42 | }
43 | },
44 | (long)interval.TotalMilliseconds);
45 |
46 | return
47 | Disposable.Create(() =>
48 | {
49 | Interlocked.Exchange(ref token, null);
50 | });
51 | }
52 |
53 |
54 | public IDisposable StartInterval(TimeSpan interval, Action callback)
55 | {
56 | SerialDisposable disposable = new SerialDisposable();
57 | StartInterval(interval, callback, disposable, new object());
58 | return disposable;
59 | }
60 |
61 | public bool OnMainThread()
62 | {
63 | return Looper.MyLooper() == Looper.MainLooper;
64 | }
65 |
66 |
67 | void StartInterval(
68 | TimeSpan interval,
69 | Action callback,
70 | SerialDisposable disposable,
71 | object token)
72 | {
73 | getHandler().PostDelayed(() =>
74 | {
75 | var t = Interlocked.Exchange(ref token, null);
76 | if (t != null)
77 | {
78 | callback();
79 | StartInterval(interval, callback, disposable, t);
80 | }
81 |
82 | }, (long)interval.TotalMilliseconds);
83 |
84 | disposable.Disposable =
85 | Disposable.Create(() =>
86 | {
87 | Interlocked.Exchange(ref token, null);
88 | });
89 | }
90 |
91 | }
92 | }
93 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.WPF/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace XamarinDispatchScheduler.Tests.WPF.Properties
12 | {
13 |
14 |
15 | ///
16 | /// A strongly-typed resource class, for looking up localized strings, etc.
17 | ///
18 | // This class was auto-generated by the StronglyTypedResourceBuilder
19 | // class via a tool like ResGen or Visual Studio.
20 | // To add or remove a member, edit your .ResX file then rerun ResGen
21 | // with the /str option, or rebuild your VS project.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources
26 | {
27 |
28 | private static global::System.Resources.ResourceManager resourceMan;
29 |
30 | private static global::System.Globalization.CultureInfo resourceCulture;
31 |
32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
33 | internal Resources()
34 | {
35 | }
36 |
37 | ///
38 | /// Returns the cached ResourceManager instance used by this class.
39 | ///
40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
41 | internal static global::System.Resources.ResourceManager ResourceManager
42 | {
43 | get
44 | {
45 | if ((resourceMan == null))
46 | {
47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("XamarinDispatchScheduler.Tests.WPF.Properties.Resources", typeof(Resources).Assembly);
48 | resourceMan = temp;
49 | }
50 | return resourceMan;
51 | }
52 | }
53 |
54 | ///
55 | /// Overrides the current thread's CurrentUICulture property for all
56 | /// resource lookups using this strongly typed resource class.
57 | ///
58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
59 | internal static global::System.Globalization.CultureInfo Culture
60 | {
61 | get
62 | {
63 | return resourceCulture;
64 | }
65 | set
66 | {
67 | resourceCulture = value;
68 | }
69 | }
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.UITests/XamarinDispatchScheduler.UITests.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | AnyCPU
6 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}
7 | Library
8 | XamarinDispatchScheduler.UITests
9 | XamarinDispatchScheduler.UITests
10 | v4.6.1
11 |
12 |
13 | true
14 | full
15 | false
16 | bin\Debug
17 | DEBUG;
18 | prompt
19 | 4
20 | false
21 |
22 |
23 | full
24 | true
25 | bin\Release
26 | prompt
27 | 4
28 | false
29 |
30 |
31 |
32 | ..\packages\NUnit.2.6.4\lib\nunit.framework.dll
33 |
34 |
35 |
36 | ..\packages\Xamarin.UITest.2.2.5\lib\net45\Xamarin.UITest.dll
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 | {203bc9da-fb13-4c55-803e-f30f450bdaf8}
49 | XamarinDispatchScheduler.Tests.Android
50 | False
51 | False
52 |
53 |
54 | {f88cec7d-6c88-4d16-afde-f3dfb3cbf0df}
55 | XamarinDispatchScheduler.Tests.iOS
56 | False
57 | False
58 |
59 |
60 |
61 |
62 |
63 |
64 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler/Platforms/uap10.0/XamarinDispatcherScheduler.cs:
--------------------------------------------------------------------------------
1 |
2 | using System;
3 | using System.Reactive.Concurrency;
4 | using System.Reactive.Disposables;
5 | using System.Reactive.Windows.Foundation;
6 | using System.Runtime.ExceptionServices;
7 | using System.Threading;
8 | using Windows.ApplicationModel.Core;
9 | using Windows.UI.Core;
10 |
11 | namespace Xam.Reactive.Concurrency
12 | {
13 | public sealed class XamarinDispatcherScheduler : LocalScheduler, ISchedulerPeriodic
14 | {
15 | CoreDispatcherScheduler _dispatchScheduler;
16 |
17 | public XamarinDispatcherScheduler(CoreDispatcherScheduler dispatchScheduler) =>
18 | _dispatchScheduler = dispatchScheduler;
19 |
20 | public XamarinDispatcherScheduler(CoreDispatcher dispatcher) =>
21 | _dispatchScheduler = new CoreDispatcherScheduler(dispatcher);
22 |
23 |
24 | public bool HasThreadAccess =>
25 | _dispatchScheduler.Dispatcher.HasThreadAccess;
26 |
27 |
28 | public override IDisposable Schedule(TState state, TimeSpan dueTime, Func action) =>
29 | ScheduleOnMainThread(() => _dispatchScheduler.Schedule(state, dueTime, action));
30 |
31 |
32 | public IDisposable SchedulePeriodic(TState state, TimeSpan period, Func action) =>
33 | ScheduleOnMainThread(() => _dispatchScheduler.SchedulePeriodic(state, period, action));
34 |
35 | ///
36 | /// For UWP things have to be scheduled from the main thread otherwise you'll get a cross thread exception
37 | ///
38 | ///
39 | ///
40 | IDisposable ScheduleOnMainThread(Func func)
41 | {
42 | if(HasThreadAccess)
43 | {
44 | return func();
45 | }
46 |
47 | var d = new MultipleAssignmentDisposable();
48 | d.Disposable = _dispatchScheduler.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
49 | {
50 | d.Disposable = func();
51 | })
52 | .ToObservable()
53 | .Subscribe();
54 |
55 | return d;
56 | }
57 |
58 |
59 | #region singleton
60 |
61 | static Lazy _scheduler;
62 | static IScheduler _customScheduler;
63 | static XamarinDispatcherScheduler()
64 | {
65 | _scheduler = new Lazy(() => new XamarinDispatcherScheduler(CoreApplication.MainView.CoreWindow.Dispatcher));
66 | }
67 | public static IScheduler Current
68 | {
69 | get
70 | {
71 | return _customScheduler ?? _scheduler.Value;
72 | }
73 | set
74 | {
75 | _customScheduler = value;
76 | }
77 | }
78 |
79 | public static bool OnMainThread()
80 | {
81 | if (_customScheduler != null) return false;
82 |
83 | return
84 | _scheduler
85 | .Value
86 | .HasThreadAccess;
87 | }
88 | #endregion
89 |
90 | }
91 | }
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests/MainPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Reactive.Concurrency;
5 | using System.Reactive.Linq;
6 | using System.Text;
7 | using System.Threading.Tasks;
8 | using Xamarin.Forms;
9 | using System.Reactive.Disposables;
10 | using Xam.Reactive.Concurrency;
11 |
12 | namespace XamarinDispatchScheduler.Tests
13 | {
14 | public partial class MainPage : ContentPage
15 | {
16 | public MainPage()
17 | {
18 | InitializeComponent();
19 | }
20 |
21 |
22 | protected override void OnAppearing()
23 | {
24 | base.OnAppearing();
25 |
26 | //Create observable from task pool just to ensure scheduler works off main thread
27 | TaskPoolScheduler.Default.Schedule(() =>
28 | {
29 | Observable
30 | .Timer(TimeSpan.FromSeconds(2))
31 | .Do(_ =>
32 | {
33 | if (XamarinDispatcherScheduler.OnMainThread())
34 | {
35 | throw new Exception("Your test needs to be better");
36 | }
37 | })
38 | .ObserveOn(XamarinDispatcherScheduler.Current)
39 | .Subscribe(_ =>
40 | {
41 | if (!XamarinDispatcherScheduler.OnMainThread())
42 | {
43 | throw new Exception("Scheduler fail");
44 | }
45 | lblChangeMe.Text = "Changed";
46 | });
47 |
48 | var periodic =
49 | XamarinDispatcherScheduler
50 | .Current
51 | .SchedulePeriodic(TimeSpan.FromSeconds(2),
52 | () =>
53 | {
54 | lblTimer.Text = DateTime.Now.TimeOfDay.ToString();
55 | });
56 |
57 | btnStart.Clicked += (_, __) =>
58 | {
59 | periodic?.Dispose();
60 | periodic =
61 | XamarinDispatcherScheduler
62 | .Current
63 | .SchedulePeriodic(TimeSpan.FromSeconds(2),
64 | () =>
65 | {
66 | lblTimer.Text = DateTime.Now.TimeOfDay.ToString();
67 | });
68 | };
69 |
70 |
71 | btnStop.Clicked += (_, __) =>
72 | {
73 | periodic.Dispose();
74 | };
75 |
76 | //test cancellation
77 | Observable
78 | .Timer(TimeSpan.FromSeconds(2))
79 | .ObserveOn(XamarinDispatcherScheduler.Current)
80 | .Subscribe(_ =>
81 | {
82 | throw new Exception("test");
83 | })
84 | .Dispose();
85 |
86 | XamarinDispatcherScheduler
87 | .Current
88 | .Schedule(TimeSpan.FromSeconds(5), () =>
89 | {
90 | if (!String.IsNullOrWhiteSpace(lblSlowScheduler.Text))
91 | {
92 | throw new Exception("Scheduler ran more than once");
93 | }
94 |
95 | lblSlowScheduler.Text = "slowly scheduled";
96 | });
97 |
98 | });
99 | }
100 | }
101 | }
102 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler/XamarinDispatchScheduler.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Copyright (c) GitHub
5 | https://opensource.org/licenses/MIT
6 | https://github.com/PureWeen/XamarinDispatchScheduler
7 | Shane Neuville
8 | shaneneuville
9 | Xamarin;Dispatcher;UIThread;System.Reactive;Rx.Net;Rx;Reactive
10 | https://github.com/PureWeen/XamarinDispatchScheduler/releases
11 |
12 | https://github.com/PureWeen/XamarinDispatchScheduler
13 | git
14 |
15 | $(NoWarn);1591;1701;1702;1705
16 | true
17 |
18 | Xam.Reactive.DispatchScheduler
19 |
20 | Xamarin Reactive Dispatch Scheduler
21 |
22 |
23 | Xamarin Cross Platform IScheduler implementation for scheduling onto the main thread. Works with Xamarin.Forms, Xamarin.Android, Xamarin.iOS, and Xamarin.UWP
24 |
25 |
26 |
27 |
28 | netstandard2.0;net461;uap10.0.16299;Xamarin.iOS10;Xamarin.Mac20;MonoAndroid80;
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 | $(MSBuildThisFileDirectory)
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.UWP/App.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.IO;
4 | using System.Linq;
5 | using System.Reactive.Concurrency;
6 | using System.Runtime.InteropServices.WindowsRuntime;
7 | using Windows.ApplicationModel;
8 | using Windows.ApplicationModel.Activation;
9 | using Windows.Foundation;
10 | using Windows.Foundation.Collections;
11 | using Windows.UI.Xaml;
12 | using Windows.UI.Xaml.Controls;
13 | using Windows.UI.Xaml.Controls.Primitives;
14 | using Windows.UI.Xaml.Data;
15 | using Windows.UI.Xaml.Input;
16 | using Windows.UI.Xaml.Media;
17 | using Windows.UI.Xaml.Navigation;
18 |
19 | namespace XamarinDispatchScheduler.Tests.UWP
20 | {
21 | ///
22 | /// Provides application-specific behavior to supplement the default Application class.
23 | ///
24 | sealed partial class App : Application
25 | {
26 | ///
27 | /// Initializes the singleton application object. This is the first line of authored code
28 | /// executed, and as such is the logical equivalent of main() or WinMain().
29 | ///
30 | public App()
31 | {
32 | this.InitializeComponent();
33 | this.Suspending += OnSuspending;
34 | }
35 |
36 | ///
37 | /// Invoked when the application is launched normally by the end user. Other entry points
38 | /// will be used such as when the application is launched to open a specific file.
39 | ///
40 | /// Details about the launch request and process.
41 | protected override void OnLaunched(LaunchActivatedEventArgs e)
42 | {
43 | Frame rootFrame = Window.Current.Content as Frame;
44 |
45 | // Do not repeat app initialization when the Window already has content,
46 | // just ensure that the window is active
47 | if (rootFrame == null)
48 | {
49 | // Create a Frame to act as the navigation context and navigate to the first page
50 | rootFrame = new Frame();
51 |
52 | rootFrame.NavigationFailed += OnNavigationFailed;
53 | Xamarin.Forms.Forms.Init(e);
54 |
55 | if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
56 | {
57 | //TODO: Load state from previously suspended application
58 | }
59 |
60 | // Place the frame in the current Window
61 | Window.Current.Content = rootFrame;
62 | }
63 |
64 | if (e.PrelaunchActivated == false)
65 | {
66 | if (rootFrame.Content == null)
67 | {
68 | // When the navigation stack isn't restored navigate to the first page,
69 | // configuring the new page by passing required information as a navigation
70 | // parameter
71 | rootFrame.Navigate(typeof(MainPage), e.Arguments);
72 | }
73 | // Ensure the current window is active
74 | Window.Current.Activate();
75 | }
76 | }
77 |
78 | ///
79 | /// Invoked when Navigation to a certain page fails
80 | ///
81 | /// The Frame which failed navigation
82 | /// Details about the navigation failure
83 | void OnNavigationFailed(object sender, NavigationFailedEventArgs e)
84 | {
85 | throw new Exception("Failed to load Page " + e.SourcePageType.FullName);
86 | }
87 |
88 | ///
89 | /// Invoked when application execution is being suspended. Application state is saved
90 | /// without knowing whether the application will be terminated or resumed with the contents
91 | /// of memory still intact.
92 | ///
93 | /// The source of the suspend request.
94 | /// Details about the suspend request.
95 | private void OnSuspending(object sender, SuspendingEventArgs e)
96 | {
97 | var deferral = e.SuspendingOperation.GetDeferral();
98 | //TODO: Save application state and stop any background activity
99 | deferral.Complete();
100 | }
101 | }
102 | }
103 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler/Platforms/xamarin-common/XamarinDispatcherScheduler.cs:
--------------------------------------------------------------------------------
1 |
2 | using System;
3 | using System.Reactive.Concurrency;
4 | using System.Reactive.Disposables;
5 |
6 | namespace Xam.Reactive.Concurrency
7 | {
8 | public sealed class XamarinDispatcherScheduler : LocalScheduler, ISchedulerPeriodic
9 | {
10 | static Lazy _scheduler;
11 | static IScheduler _customScheduler;
12 |
13 | static XamarinDispatcherScheduler()
14 | {
15 | _scheduler = new Lazy(() => new XamarinDispatcherScheduler(new PlatformImplementation()));
16 | }
17 |
18 | public IPlatformImplementation _platform;
19 |
20 | public XamarinDispatcherScheduler(IPlatformImplementation platform)
21 | {
22 | _platform = platform;
23 | }
24 |
25 | public static IScheduler Current
26 | {
27 | get
28 | {
29 | return _customScheduler ?? _scheduler.Value;
30 | }
31 | set
32 | {
33 | _customScheduler = value;
34 | }
35 | }
36 |
37 | public static bool OnMainThread()
38 | {
39 | if (_customScheduler != null) return false;
40 |
41 | return _scheduler.Value.Platform.OnMainThread();
42 | }
43 |
44 |
45 | public IPlatformImplementation Platform => _platform;
46 |
47 | public override IDisposable Schedule(TState state, Func action)
48 | {
49 | if (action == null)
50 | throw new ArgumentNullException(nameof(action));
51 |
52 | var d = new SingleAssignmentDisposable();
53 | _scheduler.Value.Platform.BeginInvokeOnMainThread(() =>
54 | {
55 | if (!d.IsDisposed)
56 | {
57 | d.Disposable = action(this, state);
58 | }
59 | });
60 |
61 | return d;
62 | }
63 |
64 | public override IDisposable Schedule(TState state, TimeSpan dueTime, Func action)
65 | {
66 | if (action == null)
67 | throw new ArgumentNullException(nameof(action));
68 |
69 | var dt = Scheduler.Normalize(dueTime);
70 | if (dt.Ticks == 0)
71 | {
72 | return Schedule(state, action);
73 | }
74 |
75 | return ScheduleSlow(state, dt, action);
76 | }
77 |
78 | private IDisposable ScheduleSlow(TState state, TimeSpan dueTime, Func action)
79 | {
80 | var d = new MultipleAssignmentDisposable();
81 | IDisposable timer = null;
82 |
83 | timer =
84 | _scheduler.Value.Platform.StartTimer(dueTime,
85 | () =>
86 | {
87 | if (!d.IsDisposed)
88 | {
89 | try
90 | {
91 | d.Disposable = action(this, state);
92 | }
93 | finally
94 | {
95 | action = null;
96 | timer.Dispose();
97 | }
98 | }
99 | });
100 |
101 | d.Disposable = new CompositeDisposable(
102 | d,
103 | timer,
104 | Disposable.Create(() =>
105 | {
106 | action = (_, __) => Disposable.Empty;
107 | })
108 | );
109 |
110 | return d;
111 | }
112 |
113 |
114 | public IDisposable SchedulePeriodic(TState state, TimeSpan period, Func action)
115 | {
116 | if (period < TimeSpan.Zero)
117 | throw new ArgumentOutOfRangeException(nameof(period));
118 | if (action == null)
119 | throw new ArgumentNullException(nameof(action));
120 |
121 | var state1 = state;
122 | return _scheduler.Value.Platform.StartInterval(period,
123 | () =>
124 | {
125 | state1 = action(state1);
126 | });
127 | }
128 | }
129 | }
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.Android/XamarinDispatchScheduler.Tests.Android.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | AnyCPU
6 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}
7 | {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
8 | Library
9 | XamarinDispatchScheduler.Tests.Droid
10 | XamarinDispatchScheduler.Tests.Android
11 | v8.1
12 | True
13 | Resources\Resource.designer.cs
14 | Resource
15 | Properties\AndroidManifest.xml
16 | Resources
17 | Assets
18 | true
19 | t
20 |
21 |
22 |
23 |
24 | true
25 | full
26 | false
27 | bin\Debug
28 | DEBUG;
29 | prompt
30 | 4
31 | None
32 | true
33 | false
34 | armeabi;armeabi-v7a;x86
35 | Xamarin.Android.Net.AndroidClientHandler
36 | btls
37 |
38 |
39 | true
40 | pdbonly
41 | true
42 | bin\Release
43 | prompt
44 | 4
45 | true
46 | false
47 | armeabi-v7a;x86
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 | Designer
87 |
88 |
89 |
90 |
91 | {2cfd040b-dc2b-4fce-951c-3d33c68c998b}
92 | XamarinDispatchScheduler.Tests
93 |
94 |
95 | {62fcf2bc-eb60-47b3-a23f-9da86fdcb182}
96 | XamarinDispatchScheduler
97 |
98 |
99 |
100 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.WPF/XamarinDispatchScheduler.Tests.WPF.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {5D680814-936A-4E2F-A576-AF186411FFEE}
8 | WinExe
9 | XamarinDispatchScheduler.Tests.WPF
10 | XamarinDispatchScheduler.Tests.WPF
11 | v4.7.1
12 | 512
13 | {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
14 | 4
15 | true
16 |
17 |
18 | AnyCPU
19 | true
20 | full
21 | false
22 | bin\Debug\
23 | DEBUG;TRACE
24 | prompt
25 | 4
26 |
27 |
28 | AnyCPU
29 | pdbonly
30 | true
31 | bin\Release\
32 | TRACE
33 | prompt
34 | 4
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 | 4.0
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 | MSBuild:Compile
55 | Designer
56 |
57 |
58 | MSBuild:Compile
59 | Designer
60 |
61 |
62 | App.xaml
63 | Code
64 |
65 |
66 | MainWindow.xaml
67 | Code
68 |
69 |
70 |
71 |
72 | Code
73 |
74 |
75 | True
76 | True
77 | Resources.resx
78 |
79 |
80 | True
81 | Settings.settings
82 | True
83 |
84 |
85 | ResXFileCodeGenerator
86 | Resources.Designer.cs
87 |
88 |
89 | SettingsSingleFileGenerator
90 | Settings.Designer.cs
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 | 3.1.0.697729
99 |
100 |
101 | 3.1.0.697729
102 |
103 |
104 |
105 |
106 | {2cfd040b-dc2b-4fce-951c-3d33c68c998b}
107 | XamarinDispatchScheduler.Tests
108 |
109 |
110 | {62fcf2bc-eb60-47b3-a23f-9da86fdcb182}
111 | XamarinDispatchScheduler
112 |
113 |
114 |
115 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 |
4 | # User-specific files
5 | *.suo
6 | *.user
7 | *.userosscache
8 | *.sln.docstates
9 |
10 | # User-specific files (MonoDevelop/Xamarin Studio)
11 | *.userprefs
12 |
13 | # Build results
14 | [Dd]ebug/
15 | [Dd]ebugPublic/
16 | [Rr]elease/
17 | [Rr]eleases/
18 | x64/
19 | x86/
20 | bld/
21 | [Bb]in/
22 | [Oo]bj/
23 | [Ll]og/
24 |
25 | # Visual Studio 2015 cache/options directory
26 | .vs/
27 | # Uncomment if you have tasks that create the project's static files in wwwroot
28 | #wwwroot/
29 |
30 | # MSTest test Results
31 | [Tt]est[Rr]esult*/
32 | [Bb]uild[Ll]og.*
33 |
34 | # NUNIT
35 | *.VisualState.xml
36 | TestResult.xml
37 |
38 | # Build Results of an ATL Project
39 | [Dd]ebugPS/
40 | [Rr]eleasePS/
41 | dlldata.c
42 |
43 | # DNX
44 | project.lock.json
45 | project.fragment.lock.json
46 | artifacts/
47 |
48 | *_i.c
49 | *_p.c
50 | *_i.h
51 | *.ilk
52 | *.meta
53 | *.obj
54 | *.pch
55 | *.pdb
56 | *.pgc
57 | *.pgd
58 | *.rsp
59 | *.sbr
60 | *.tlb
61 | *.tli
62 | *.tlh
63 | *.tmp
64 | *.tmp_proj
65 | *.log
66 | *.vspscc
67 | *.vssscc
68 | .builds
69 | *.pidb
70 | *.svclog
71 | *.scc
72 |
73 | # Chutzpah Test files
74 | _Chutzpah*
75 |
76 | # Visual C++ cache files
77 | ipch/
78 | *.aps
79 | *.ncb
80 | *.opendb
81 | *.opensdf
82 | *.sdf
83 | *.cachefile
84 | *.VC.db
85 | *.VC.VC.opendb
86 |
87 | # Visual Studio profiler
88 | *.psess
89 | *.vsp
90 | *.vspx
91 | *.sap
92 |
93 | # TFS 2012 Local Workspace
94 | $tf/
95 |
96 | # Guidance Automation Toolkit
97 | *.gpState
98 |
99 | # ReSharper is a .NET coding add-in
100 | _ReSharper*/
101 | *.[Rr]e[Ss]harper
102 | *.DotSettings.user
103 |
104 | # JustCode is a .NET coding add-in
105 | .JustCode
106 |
107 | # TeamCity is a build add-in
108 | _TeamCity*
109 |
110 | # DotCover is a Code Coverage Tool
111 | *.dotCover
112 |
113 | # NCrunch
114 | _NCrunch_*
115 | .*crunch*.local.xml
116 | nCrunchTemp_*
117 |
118 | # MightyMoose
119 | *.mm.*
120 | AutoTest.Net/
121 |
122 | # Web workbench (sass)
123 | .sass-cache/
124 |
125 | # Installshield output folder
126 | [Ee]xpress/
127 |
128 | # DocProject is a documentation generator add-in
129 | DocProject/buildhelp/
130 | DocProject/Help/*.HxT
131 | DocProject/Help/*.HxC
132 | DocProject/Help/*.hhc
133 | DocProject/Help/*.hhk
134 | DocProject/Help/*.hhp
135 | DocProject/Help/Html2
136 | DocProject/Help/html
137 |
138 | # Click-Once directory
139 | publish/
140 |
141 | # Publish Web Output
142 | *.[Pp]ublish.xml
143 | *.azurePubxml
144 | # TODO: Comment the next line if you want to checkin your web deploy settings
145 | # but database connection strings (with potential passwords) will be unencrypted
146 | #*.pubxml
147 | *.publishproj
148 |
149 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
150 | # checkin your Azure Web App publish settings, but sensitive information contained
151 | # in these scripts will be unencrypted
152 | PublishScripts/
153 |
154 | # NuGet Packages
155 | *.nupkg
156 | # The packages folder can be ignored because of Package Restore
157 | **/packages/*
158 | # except build/, which is used as an MSBuild target.
159 | !**/packages/build/
160 | # Uncomment if necessary however generally it will be regenerated when needed
161 | #!**/packages/repositories.config
162 | # NuGet v3's project.json files produces more ignoreable files
163 | *.nuget.props
164 | *.nuget.targets
165 |
166 | # Microsoft Azure Build Output
167 | csx/
168 | *.build.csdef
169 |
170 | # Microsoft Azure Emulator
171 | ecf/
172 | rcf/
173 |
174 | # Windows Store app package directories and files
175 | AppPackages/
176 | BundleArtifacts/
177 | Package.StoreAssociation.xml
178 | _pkginfo.txt
179 |
180 | # Visual Studio cache files
181 | # files ending in .cache can be ignored
182 | *.[Cc]ache
183 | # but keep track of directories ending in .cache
184 | !*.[Cc]ache/
185 |
186 | # Others
187 | ClientBin/
188 | ~$*
189 | *~
190 | *.dbmdl
191 | *.dbproj.schemaview
192 | *.jfm
193 | *.pfx
194 | *.publishsettings
195 | node_modules/
196 | orleans.codegen.cs
197 |
198 | # Since there are multiple workflows, uncomment next line to ignore bower_components
199 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
200 | #bower_components/
201 |
202 | # RIA/Silverlight projects
203 | Generated_Code/
204 |
205 | # Backup & report files from converting an old project file
206 | # to a newer Visual Studio version. Backup files are not needed,
207 | # because we have git ;-)
208 | _UpgradeReport_Files/
209 | Backup*/
210 | UpgradeLog*.XML
211 | UpgradeLog*.htm
212 |
213 | # SQL Server files
214 | *.mdf
215 | *.ldf
216 |
217 | # Business Intelligence projects
218 | *.rdl.data
219 | *.bim.layout
220 | *.bim_*.settings
221 |
222 | # Microsoft Fakes
223 | FakesAssemblies/
224 |
225 | # GhostDoc plugin setting file
226 | *.GhostDoc.xml
227 |
228 | # Node.js Tools for Visual Studio
229 | .ntvs_analysis.dat
230 |
231 | # Visual Studio 6 build log
232 | *.plg
233 |
234 | # Visual Studio 6 workspace options file
235 | *.opt
236 |
237 | # Visual Studio LightSwitch build output
238 | **/*.HTMLClient/GeneratedArtifacts
239 | **/*.DesktopClient/GeneratedArtifacts
240 | **/*.DesktopClient/ModelManifest.xml
241 | **/*.Server/GeneratedArtifacts
242 | **/*.Server/ModelManifest.xml
243 | _Pvt_Extensions
244 |
245 | # Paket dependency manager
246 | .paket/paket.exe
247 | paket-files/
248 |
249 | # FAKE - F# Make
250 | .fake/
251 |
252 |
253 | # JetBrains Rider
254 | .idea/
255 | *.sln.iml
256 |
257 | # CodeRush
258 | .cr/
259 |
260 | # Python Tools for Visual Studio (PTVS)
261 | __pycache__/
262 | *.pyc
263 |
264 |
265 | #Android Build files
266 | XamarinDispatchScheduler.Tests.Android/t/
267 |
268 | #build Tools
269 | /tools/*
270 | tools/
271 |
272 | # Fody Weavers (for tests)
273 | src/Tools/
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.WPF/Properties/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 | text/microsoft-resx
107 |
108 |
109 | 2.0
110 |
111 |
112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
113 |
114 |
115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.iOS/XamarinDispatchScheduler.Tests.iOS.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | iPhoneSimulator
6 | 8.0.30703
7 | 2.0
8 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}
9 | {FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
10 | Exe
11 | XamarinDispatchScheduler.Tests.iOS
12 | Resources
13 | XamarinDispatchScheduler.Tests.iOS
14 |
15 |
16 |
17 |
18 | true
19 | full
20 | false
21 | bin\iPhoneSimulator\Debug
22 | DEBUG;__IOS__;__MOBILE__;__UNIFIED__;
23 | prompt
24 | 4
25 | false
26 | x86_64
27 | None
28 | true
29 |
30 |
31 | none
32 | true
33 | bin\iPhoneSimulator\Release
34 | prompt
35 | 4
36 | None
37 | x86_64
38 | false
39 |
40 |
41 | true
42 | full
43 | false
44 | bin\iPhone\Debug
45 | DEBUG
46 | prompt
47 | 4
48 | false
49 | ARM64
50 | iPhone Developer
51 | true
52 | Entitlements.plist
53 |
54 |
55 | none
56 | true
57 | bin\iPhone\Release
58 | prompt
59 | 4
60 | ARM64
61 | false
62 | iPhone Developer
63 | Entitlements.plist
64 |
65 |
66 | none
67 | True
68 | bin\iPhone\Ad-Hoc
69 | prompt
70 | 4
71 | False
72 | ARM64
73 | True
74 | Automatic:AdHoc
75 | iPhone Distribution
76 | Entitlements.plist
77 |
78 |
79 | none
80 | True
81 | bin\iPhone\AppStore
82 | prompt
83 | 4
84 | False
85 | ARM64
86 | Automatic:AppStore
87 | iPhone Distribution
88 | Entitlements.plist
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 | 0.21.6
125 |
126 |
127 |
128 |
129 | {2cfd040b-dc2b-4fce-951c-3d33c68c998b}
130 | XamarinDispatchScheduler.Tests
131 |
132 |
133 | {62fcf2bc-eb60-47b3-a23f-9da86fdcb182}
134 | XamarinDispatchScheduler
135 |
136 |
137 |
138 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.UWP/XamarinDispatchScheduler.Tests.UWP.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | x86
7 | {7C65D294-E010-488D-A628-3030A441988E}
8 | AppContainerExe
9 | Properties
10 | XamarinDispatchScheduler.Tests.UWP
11 | XamarinDispatchScheduler.Tests.UWP
12 | en-US
13 | UAP
14 | 10.0.16299.0
15 | 10.0.16299.0
16 | 14
17 | 512
18 | {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
19 | true
20 | XamarinDispatchScheduler.Tests.UWP_TemporaryKey.pfx
21 |
22 |
23 | true
24 | bin\x86\Debug\
25 | DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP
26 | ;2008
27 | full
28 | x86
29 | false
30 | prompt
31 | true
32 |
33 |
34 | bin\x86\Release\
35 | TRACE;NETFX_CORE;WINDOWS_UWP
36 | true
37 | ;2008
38 | pdbonly
39 | x86
40 | false
41 | prompt
42 | true
43 | true
44 |
45 |
46 | true
47 | bin\ARM\Debug\
48 | DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP
49 | ;2008
50 | full
51 | ARM
52 | false
53 | prompt
54 | true
55 |
56 |
57 | bin\ARM\Release\
58 | TRACE;NETFX_CORE;WINDOWS_UWP
59 | true
60 | ;2008
61 | pdbonly
62 | ARM
63 | false
64 | prompt
65 | true
66 | true
67 |
68 |
69 | true
70 | bin\x64\Debug\
71 | DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP
72 | ;2008
73 | full
74 | x64
75 | false
76 | prompt
77 | true
78 |
79 |
80 | bin\x64\Release\
81 | TRACE;NETFX_CORE;WINDOWS_UWP
82 | true
83 | ;2008
84 | pdbonly
85 | x64
86 | false
87 | prompt
88 | true
89 | true
90 |
91 |
92 | PackageReference
93 |
94 |
95 |
96 | App.xaml
97 |
98 |
99 | MainPage.xaml
100 |
101 |
102 |
103 |
104 |
105 | Designer
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 | MSBuild:Compile
122 | Designer
123 |
124 |
125 | MSBuild:Compile
126 | Designer
127 |
128 |
129 |
130 |
131 | 6.1.5
132 |
133 |
134 | 3.1.0.697729
135 |
136 |
137 |
138 |
139 | {2cfd040b-dc2b-4fce-951c-3d33c68c998b}
140 | XamarinDispatchScheduler.Tests
141 |
142 |
143 | {62fcf2bc-eb60-47b3-a23f-9da86fdcb182}
144 | XamarinDispatchScheduler
145 |
146 |
147 |
148 | 14.0
149 |
150 |
151 |
158 |
--------------------------------------------------------------------------------
/XamarinDispatchScheduler.Tests.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 15
4 | VisualStudioVersion = 15.0.26730.10
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 |
7 |
8 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "XamarinDispatchScheduler.Tests", "XamarinDispatchScheduler.Tests\XamarinDispatchScheduler.Tests\XamarinDispatchScheduler.Tests.csproj", "{377E0240-CE14-4E21-B0B1-4EC814432C21}"
9 | EndProject
10 |
11 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamarinDispatchScheduler.Tests.iOS", "XamarinDispatchScheduler.Tests\XamarinDispatchScheduler.Tests.iOS\XamarinDispatchScheduler.Tests.iOS.csproj", "{F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}"
12 | EndProject
13 |
14 |
15 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamarinDispatchScheduler.Tests.Android", "XamarinDispatchScheduler.Tests\XamarinDispatchScheduler.Tests.Android\XamarinDispatchScheduler.Tests.Android.csproj", "{203BC9DA-FB13-4C55-803E-F30F450BDAF8}"
16 | EndProject
17 |
18 |
19 | Global
20 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
21 | Ad-Hoc|Any CPU = Ad-Hoc|Any CPU
22 | Ad-Hoc|ARM = Ad-Hoc|ARM
23 | Ad-Hoc|iPhone = Ad-Hoc|iPhone
24 | Ad-Hoc|iPhoneSimulator = Ad-Hoc|iPhoneSimulator
25 | Ad-Hoc|x64 = Ad-Hoc|x64
26 | Ad-Hoc|x86 = Ad-Hoc|x86
27 | AppStore|Any CPU = AppStore|Any CPU
28 | AppStore|ARM = AppStore|ARM
29 | AppStore|iPhone = AppStore|iPhone
30 | AppStore|iPhoneSimulator = AppStore|iPhoneSimulator
31 | AppStore|x64 = AppStore|x64
32 | AppStore|x86 = AppStore|x86
33 | Debug|Any CPU = Debug|Any CPU
34 | Debug|ARM = Debug|ARM
35 | Debug|iPhone = Debug|iPhone
36 | Debug|iPhoneSimulator = Debug|iPhoneSimulator
37 | Debug|x64 = Debug|x64
38 | Debug|x86 = Debug|x86
39 | Release|Any CPU = Release|Any CPU
40 | Release|ARM = Release|ARM
41 | Release|iPhone = Release|iPhone
42 | Release|iPhoneSimulator = Release|iPhoneSimulator
43 | Release|x64 = Release|x64
44 | Release|x86 = Release|x86
45 | EndGlobalSection
46 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
47 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
48 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
49 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
50 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
51 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
52 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
53 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
54 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
55 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
56 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
57 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
58 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
59 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
60 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.AppStore|Any CPU.Build.0 = Debug|Any CPU
61 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.AppStore|ARM.ActiveCfg = Debug|Any CPU
62 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.AppStore|ARM.Build.0 = Debug|Any CPU
63 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
64 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.AppStore|iPhone.Build.0 = Debug|Any CPU
65 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
66 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
67 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.AppStore|x64.ActiveCfg = Debug|Any CPU
68 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.AppStore|x64.Build.0 = Debug|Any CPU
69 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.AppStore|x86.ActiveCfg = Debug|Any CPU
70 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.AppStore|x86.Build.0 = Debug|Any CPU
71 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
72 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.Debug|Any CPU.Build.0 = Debug|Any CPU
73 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.Debug|ARM.ActiveCfg = Debug|Any CPU
74 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.Debug|ARM.Build.0 = Debug|Any CPU
75 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.Debug|iPhone.ActiveCfg = Debug|Any CPU
76 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.Debug|iPhone.Build.0 = Debug|Any CPU
77 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
78 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
79 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.Debug|x64.ActiveCfg = Debug|Any CPU
80 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.Debug|x64.Build.0 = Debug|Any CPU
81 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.Debug|x86.ActiveCfg = Debug|Any CPU
82 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.Debug|x86.Build.0 = Debug|Any CPU
83 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.Release|Any CPU.ActiveCfg = Release|Any CPU
84 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.Release|Any CPU.Build.0 = Release|Any CPU
85 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.Release|ARM.ActiveCfg = Release|Any CPU
86 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.Release|ARM.Build.0 = Release|Any CPU
87 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.Release|iPhone.ActiveCfg = Release|Any CPU
88 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.Release|iPhone.Build.0 = Release|Any CPU
89 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
90 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
91 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.Release|x64.ActiveCfg = Release|Any CPU
92 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.Release|x64.Build.0 = Release|Any CPU
93 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.Release|x86.ActiveCfg = Release|Any CPU
94 | {377E0240-CE14-4E21-B0B1-4EC814432C21}.Release|x86.Build.0 = Release|Any CPU
95 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Ad-Hoc|Any CPU.ActiveCfg = Ad-Hoc|iPhone
96 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Ad-Hoc|ARM.ActiveCfg = Ad-Hoc|iPhone
97 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Ad-Hoc|iPhone.ActiveCfg = Ad-Hoc|iPhone
98 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Ad-Hoc|iPhone.Build.0 = Ad-Hoc|iPhone
99 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Ad-Hoc|iPhoneSimulator
100 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Ad-Hoc|iPhoneSimulator.Build.0 = Ad-Hoc|iPhoneSimulator
101 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Ad-Hoc|x64.ActiveCfg = Ad-Hoc|iPhone
102 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Ad-Hoc|x86.ActiveCfg = Ad-Hoc|iPhone
103 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.AppStore|Any CPU.ActiveCfg = AppStore|iPhone
104 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.AppStore|ARM.ActiveCfg = AppStore|iPhone
105 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.AppStore|iPhone.ActiveCfg = AppStore|iPhone
106 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.AppStore|iPhone.Build.0 = AppStore|iPhone
107 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.AppStore|iPhoneSimulator.ActiveCfg = AppStore|iPhoneSimulator
108 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.AppStore|iPhoneSimulator.Build.0 = AppStore|iPhoneSimulator
109 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.AppStore|x64.ActiveCfg = AppStore|iPhone
110 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.AppStore|x86.ActiveCfg = AppStore|iPhone
111 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Debug|Any CPU.ActiveCfg = Debug|iPhone
112 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Debug|ARM.ActiveCfg = Debug|iPhone
113 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Debug|iPhone.ActiveCfg = Debug|iPhone
114 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Debug|iPhone.Build.0 = Debug|iPhone
115 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
116 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
117 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Debug|x64.ActiveCfg = Debug|iPhone
118 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Debug|x86.ActiveCfg = Debug|iPhone
119 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Release|Any CPU.ActiveCfg = Release|iPhone
120 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Release|ARM.ActiveCfg = Release|iPhone
121 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Release|iPhone.ActiveCfg = Release|iPhone
122 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Release|iPhone.Build.0 = Release|iPhone
123 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
124 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
125 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Release|x64.ActiveCfg = Release|iPhone
126 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Release|x86.ActiveCfg = Release|iPhone
127 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Ad-Hoc|Any CPU.ActiveCfg = Release|x86
128 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Ad-Hoc|Any CPU.Build.0 = Release|x86
129 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Ad-Hoc|Any CPU.Deploy.0 = Release|x86
130 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Ad-Hoc|ARM.ActiveCfg = Release|ARM
131 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Ad-Hoc|ARM.Build.0 = Release|ARM
132 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Ad-Hoc|ARM.Deploy.0 = Release|ARM
133 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Ad-Hoc|iPhone.ActiveCfg = Release|x86
134 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Ad-Hoc|iPhone.Build.0 = Release|x86
135 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Ad-Hoc|iPhone.Deploy.0 = Release|x86
136 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|x86
137 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|x86
138 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|x86
139 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Ad-Hoc|x64.ActiveCfg = Release|x64
140 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Ad-Hoc|x64.Build.0 = Release|x64
141 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Ad-Hoc|x64.Deploy.0 = Release|x64
142 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Ad-Hoc|x86.ActiveCfg = Release|x86
143 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Ad-Hoc|x86.Build.0 = Release|x86
144 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Ad-Hoc|x86.Deploy.0 = Release|x86
145 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.AppStore|Any CPU.ActiveCfg = Release|x86
146 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.AppStore|Any CPU.Build.0 = Release|x86
147 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.AppStore|Any CPU.Deploy.0 = Release|x86
148 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.AppStore|ARM.ActiveCfg = Release|ARM
149 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.AppStore|ARM.Build.0 = Release|ARM
150 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.AppStore|ARM.Deploy.0 = Release|ARM
151 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.AppStore|iPhone.ActiveCfg = Release|x86
152 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.AppStore|iPhone.Build.0 = Release|x86
153 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.AppStore|iPhone.Deploy.0 = Release|x86
154 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.AppStore|iPhoneSimulator.ActiveCfg = Release|x86
155 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.AppStore|iPhoneSimulator.Build.0 = Release|x86
156 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.AppStore|iPhoneSimulator.Deploy.0 = Release|x86
157 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.AppStore|x64.ActiveCfg = Release|x64
158 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.AppStore|x64.Build.0 = Release|x64
159 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.AppStore|x64.Deploy.0 = Release|x64
160 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.AppStore|x86.ActiveCfg = Release|x86
161 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.AppStore|x86.Build.0 = Release|x86
162 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.AppStore|x86.Deploy.0 = Release|x86
163 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Debug|Any CPU.ActiveCfg = Debug|x86
164 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Debug|ARM.ActiveCfg = Debug|ARM
165 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Debug|ARM.Build.0 = Debug|ARM
166 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Debug|ARM.Deploy.0 = Debug|ARM
167 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Debug|iPhone.ActiveCfg = Debug|x86
168 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86
169 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Debug|x64.ActiveCfg = Debug|x64
170 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Debug|x64.Build.0 = Debug|x64
171 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Debug|x64.Deploy.0 = Debug|x64
172 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Debug|x86.ActiveCfg = Debug|x86
173 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Debug|x86.Build.0 = Debug|x86
174 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Debug|x86.Deploy.0 = Debug|x86
175 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Release|Any CPU.ActiveCfg = Release|x86
176 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Release|ARM.ActiveCfg = Release|ARM
177 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Release|ARM.Build.0 = Release|ARM
178 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Release|ARM.Deploy.0 = Release|ARM
179 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Release|iPhone.ActiveCfg = Release|x86
180 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Release|iPhoneSimulator.ActiveCfg = Release|x86
181 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Release|x64.ActiveCfg = Release|x64
182 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Release|x64.Build.0 = Release|x64
183 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Release|x64.Deploy.0 = Release|x64
184 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Release|x86.ActiveCfg = Release|x86
185 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Release|x86.Build.0 = Release|x86
186 | {C271B46E-3F95-45AD-AAE5-8D9D2F81AFFE}.Release|x86.Deploy.0 = Release|x86
187 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
188 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
189 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Ad-Hoc|Any CPU.Deploy.0 = Release|Any CPU
190 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
191 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Ad-Hoc|ARM.Build.0 = Release|Any CPU
192 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Ad-Hoc|ARM.Deploy.0 = Release|Any CPU
193 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
194 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
195 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Ad-Hoc|iPhone.Deploy.0 = Release|Any CPU
196 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
197 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
198 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|Any CPU
199 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
200 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Ad-Hoc|x64.Build.0 = Release|Any CPU
201 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Ad-Hoc|x64.Deploy.0 = Release|Any CPU
202 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
203 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Ad-Hoc|x86.Build.0 = Release|Any CPU
204 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Ad-Hoc|x86.Deploy.0 = Release|Any CPU
205 | {20FDA6ED-B68E-4610-807B-F358668F181E}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
206 | {20FDA6ED-B68E-4610-807B-F358668F181E}.AppStore|Any CPU.Build.0 = Release|Any CPU
207 | {20FDA6ED-B68E-4610-807B-F358668F181E}.AppStore|Any CPU.Deploy.0 = Release|Any CPU
208 | {20FDA6ED-B68E-4610-807B-F358668F181E}.AppStore|ARM.ActiveCfg = Release|Any CPU
209 | {20FDA6ED-B68E-4610-807B-F358668F181E}.AppStore|ARM.Build.0 = Release|Any CPU
210 | {20FDA6ED-B68E-4610-807B-F358668F181E}.AppStore|ARM.Deploy.0 = Release|Any CPU
211 | {20FDA6ED-B68E-4610-807B-F358668F181E}.AppStore|iPhone.ActiveCfg = Release|Any CPU
212 | {20FDA6ED-B68E-4610-807B-F358668F181E}.AppStore|iPhone.Build.0 = Release|Any CPU
213 | {20FDA6ED-B68E-4610-807B-F358668F181E}.AppStore|iPhone.Deploy.0 = Release|Any CPU
214 | {20FDA6ED-B68E-4610-807B-F358668F181E}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
215 | {20FDA6ED-B68E-4610-807B-F358668F181E}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
216 | {20FDA6ED-B68E-4610-807B-F358668F181E}.AppStore|iPhoneSimulator.Deploy.0 = Release|Any CPU
217 | {20FDA6ED-B68E-4610-807B-F358668F181E}.AppStore|x64.ActiveCfg = Release|Any CPU
218 | {20FDA6ED-B68E-4610-807B-F358668F181E}.AppStore|x64.Build.0 = Release|Any CPU
219 | {20FDA6ED-B68E-4610-807B-F358668F181E}.AppStore|x64.Deploy.0 = Release|Any CPU
220 | {20FDA6ED-B68E-4610-807B-F358668F181E}.AppStore|x86.ActiveCfg = Release|Any CPU
221 | {20FDA6ED-B68E-4610-807B-F358668F181E}.AppStore|x86.Build.0 = Release|Any CPU
222 | {20FDA6ED-B68E-4610-807B-F358668F181E}.AppStore|x86.Deploy.0 = Release|Any CPU
223 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
224 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Debug|Any CPU.Build.0 = Debug|Any CPU
225 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
226 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Debug|ARM.ActiveCfg = Debug|Any CPU
227 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Debug|ARM.Build.0 = Debug|Any CPU
228 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Debug|ARM.Deploy.0 = Debug|Any CPU
229 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Debug|iPhone.ActiveCfg = Debug|Any CPU
230 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Debug|iPhone.Build.0 = Debug|Any CPU
231 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Debug|iPhone.Deploy.0 = Debug|Any CPU
232 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
233 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
234 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
235 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Debug|x64.ActiveCfg = Debug|Any CPU
236 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Debug|x64.Build.0 = Debug|Any CPU
237 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Debug|x64.Deploy.0 = Debug|Any CPU
238 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Debug|x86.ActiveCfg = Debug|Any CPU
239 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Debug|x86.Build.0 = Debug|Any CPU
240 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Debug|x86.Deploy.0 = Debug|Any CPU
241 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Release|Any CPU.ActiveCfg = Release|Any CPU
242 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Release|Any CPU.Build.0 = Release|Any CPU
243 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Release|Any CPU.Deploy.0 = Release|Any CPU
244 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Release|ARM.ActiveCfg = Release|Any CPU
245 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Release|ARM.Build.0 = Release|Any CPU
246 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Release|ARM.Deploy.0 = Release|Any CPU
247 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Release|iPhone.ActiveCfg = Release|Any CPU
248 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Release|iPhone.Build.0 = Release|Any CPU
249 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Release|iPhone.Deploy.0 = Release|Any CPU
250 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
251 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
252 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
253 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Release|x64.ActiveCfg = Release|Any CPU
254 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Release|x64.Build.0 = Release|Any CPU
255 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Release|x64.Deploy.0 = Release|Any CPU
256 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Release|x86.ActiveCfg = Release|Any CPU
257 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Release|x86.Build.0 = Release|Any CPU
258 | {20FDA6ED-B68E-4610-807B-F358668F181E}.Release|x86.Deploy.0 = Release|Any CPU
259 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
260 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
261 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
262 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.Ad-Hoc|ARM.Build.0 = Release|Any CPU
263 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
264 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
265 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
266 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
267 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
268 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.Ad-Hoc|x64.Build.0 = Release|Any CPU
269 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
270 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.Ad-Hoc|x86.Build.0 = Release|Any CPU
271 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
272 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.AppStore|Any CPU.Build.0 = Release|Any CPU
273 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.AppStore|ARM.ActiveCfg = Release|Any CPU
274 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.AppStore|ARM.Build.0 = Release|Any CPU
275 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.AppStore|iPhone.ActiveCfg = Release|Any CPU
276 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.AppStore|iPhone.Build.0 = Release|Any CPU
277 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
278 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
279 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.AppStore|x64.ActiveCfg = Release|Any CPU
280 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.AppStore|x64.Build.0 = Release|Any CPU
281 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.AppStore|x86.ActiveCfg = Release|Any CPU
282 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.AppStore|x86.Build.0 = Release|Any CPU
283 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
284 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.Debug|Any CPU.Build.0 = Debug|Any CPU
285 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.Debug|ARM.ActiveCfg = Debug|Any CPU
286 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.Debug|ARM.Build.0 = Debug|Any CPU
287 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.Debug|iPhone.ActiveCfg = Debug|Any CPU
288 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.Debug|iPhone.Build.0 = Debug|Any CPU
289 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
290 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
291 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.Debug|x64.ActiveCfg = Debug|Any CPU
292 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.Debug|x64.Build.0 = Debug|Any CPU
293 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.Debug|x86.ActiveCfg = Debug|Any CPU
294 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.Debug|x86.Build.0 = Debug|Any CPU
295 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.Release|Any CPU.ActiveCfg = Release|Any CPU
296 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.Release|Any CPU.Build.0 = Release|Any CPU
297 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.Release|ARM.ActiveCfg = Release|Any CPU
298 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.Release|ARM.Build.0 = Release|Any CPU
299 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.Release|iPhone.ActiveCfg = Release|Any CPU
300 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.Release|iPhone.Build.0 = Release|Any CPU
301 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
302 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
303 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.Release|x64.ActiveCfg = Release|Any CPU
304 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.Release|x64.Build.0 = Release|Any CPU
305 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.Release|x86.ActiveCfg = Release|Any CPU
306 | {B445DF73-AC9E-4276-9FBA-7CB5AD5D2518}.Release|x86.Build.0 = Release|Any CPU
307 | EndGlobalSection
308 | GlobalSection(SolutionProperties) = preSolution
309 | HideSolutionNode = FALSE
310 | EndGlobalSection
311 | GlobalSection(ExtensibilityGlobals) = postSolution
312 | SolutionGuid = {F6D05029-56B8-4E45-AF2D-0E76295DDBA2}
313 | EndGlobalSection
314 | EndGlobal
315 |
--------------------------------------------------------------------------------
/XamarinDispatcher.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 15
4 | VisualStudioVersion = 15.0.27130.0
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Files", "Files", "{272FF237-109D-4AC6-AD83-4ECB091D9214}"
7 | ProjectSection(SolutionItems) = preProject
8 | .gitignore = .gitignore
9 | build.cake = build.cake
10 | build.cmd = build.cmd
11 | global.json = global.json
12 | Nuget.md = Nuget.md
13 | Readme.md = Readme.md
14 | version.json = version.json
15 | EndProjectSection
16 | EndProject
17 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{14129AEA-4608-40BB-8762-0166663C9846}"
18 | EndProject
19 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "XamarinDispatchScheduler.Tests", "XamarinDispatchScheduler.Tests\XamarinDispatchScheduler.Tests.csproj", "{2CFD040B-DC2B-4FCE-951C-3D33C68C998B}"
20 | EndProject
21 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamarinDispatchScheduler.Tests.Android", "XamarinDispatchScheduler.Tests.Android\XamarinDispatchScheduler.Tests.Android.csproj", "{203BC9DA-FB13-4C55-803E-F30F450BDAF8}"
22 | EndProject
23 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamarinDispatchScheduler.Tests.iOS", "XamarinDispatchScheduler.Tests.iOS\XamarinDispatchScheduler.Tests.iOS.csproj", "{F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}"
24 | EndProject
25 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamarinDispatchScheduler.Tests.UWP", "XamarinDispatchScheduler.Tests.UWP\XamarinDispatchScheduler.Tests.UWP.csproj", "{7C65D294-E010-488D-A628-3030A441988E}"
26 | EndProject
27 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "XamarinDispatchScheduler", "XamarinDispatchScheduler\XamarinDispatchScheduler.csproj", "{62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}"
28 | EndProject
29 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamarinDispatchScheduler.UITests", "XamarinDispatchScheduler.UITests\XamarinDispatchScheduler.UITests.csproj", "{996F641E-D375-4DCD-B7D6-63D7A8319D40}"
30 | EndProject
31 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamarinDispatchScheduler.Tests.WPF", "XamarinDispatchScheduler.Tests.WPF\XamarinDispatchScheduler.Tests.WPF.csproj", "{5D680814-936A-4E2F-A576-AF186411FFEE}"
32 | EndProject
33 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "XamarinDispatchScheduler.xUnit", "XamarinDispatchScheduler.xUnit\XamarinDispatchScheduler.xUnit.csproj", "{9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}"
34 | EndProject
35 | Global
36 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
37 | Ad-Hoc|Any CPU = Ad-Hoc|Any CPU
38 | Ad-Hoc|ARM = Ad-Hoc|ARM
39 | Ad-Hoc|iPhone = Ad-Hoc|iPhone
40 | Ad-Hoc|iPhoneSimulator = Ad-Hoc|iPhoneSimulator
41 | Ad-Hoc|x64 = Ad-Hoc|x64
42 | Ad-Hoc|x86 = Ad-Hoc|x86
43 | AppStore|Any CPU = AppStore|Any CPU
44 | AppStore|ARM = AppStore|ARM
45 | AppStore|iPhone = AppStore|iPhone
46 | AppStore|iPhoneSimulator = AppStore|iPhoneSimulator
47 | AppStore|x64 = AppStore|x64
48 | AppStore|x86 = AppStore|x86
49 | Debug|Any CPU = Debug|Any CPU
50 | Debug|ARM = Debug|ARM
51 | Debug|iPhone = Debug|iPhone
52 | Debug|iPhoneSimulator = Debug|iPhoneSimulator
53 | Debug|x64 = Debug|x64
54 | Debug|x86 = Debug|x86
55 | Release|Any CPU = Release|Any CPU
56 | Release|ARM = Release|ARM
57 | Release|iPhone = Release|iPhone
58 | Release|iPhoneSimulator = Release|iPhoneSimulator
59 | Release|x64 = Release|x64
60 | Release|x86 = Release|x86
61 | EndGlobalSection
62 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
63 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
64 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
65 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
66 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
67 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
68 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
69 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
70 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
71 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
72 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
73 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
74 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
75 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
76 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.AppStore|Any CPU.Build.0 = Debug|Any CPU
77 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.AppStore|ARM.ActiveCfg = Debug|Any CPU
78 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.AppStore|ARM.Build.0 = Debug|Any CPU
79 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
80 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.AppStore|iPhone.Build.0 = Debug|Any CPU
81 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
82 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
83 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.AppStore|x64.ActiveCfg = Debug|Any CPU
84 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.AppStore|x64.Build.0 = Debug|Any CPU
85 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.AppStore|x86.ActiveCfg = Debug|Any CPU
86 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.AppStore|x86.Build.0 = Debug|Any CPU
87 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
88 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.Debug|Any CPU.Build.0 = Debug|Any CPU
89 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.Debug|ARM.ActiveCfg = Debug|Any CPU
90 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.Debug|ARM.Build.0 = Debug|Any CPU
91 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.Debug|iPhone.ActiveCfg = Debug|Any CPU
92 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.Debug|iPhone.Build.0 = Debug|Any CPU
93 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
94 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
95 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.Debug|x64.ActiveCfg = Debug|Any CPU
96 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.Debug|x64.Build.0 = Debug|Any CPU
97 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.Debug|x86.ActiveCfg = Debug|Any CPU
98 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.Debug|x86.Build.0 = Debug|Any CPU
99 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.Release|Any CPU.ActiveCfg = Release|Any CPU
100 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.Release|Any CPU.Build.0 = Release|Any CPU
101 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.Release|ARM.ActiveCfg = Release|Any CPU
102 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.Release|ARM.Build.0 = Release|Any CPU
103 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.Release|iPhone.ActiveCfg = Release|Any CPU
104 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.Release|iPhone.Build.0 = Release|Any CPU
105 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
106 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
107 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.Release|x64.ActiveCfg = Release|Any CPU
108 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.Release|x64.Build.0 = Release|Any CPU
109 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.Release|x86.ActiveCfg = Release|Any CPU
110 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B}.Release|x86.Build.0 = Release|Any CPU
111 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
112 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
113 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Ad-Hoc|Any CPU.Deploy.0 = Release|Any CPU
114 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
115 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Ad-Hoc|ARM.Build.0 = Release|Any CPU
116 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Ad-Hoc|ARM.Deploy.0 = Release|Any CPU
117 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
118 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
119 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Ad-Hoc|iPhone.Deploy.0 = Release|Any CPU
120 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
121 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
122 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|Any CPU
123 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
124 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Ad-Hoc|x64.Build.0 = Release|Any CPU
125 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Ad-Hoc|x64.Deploy.0 = Release|Any CPU
126 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
127 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Ad-Hoc|x86.Build.0 = Release|Any CPU
128 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Ad-Hoc|x86.Deploy.0 = Release|Any CPU
129 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
130 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.AppStore|Any CPU.Build.0 = Release|Any CPU
131 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.AppStore|Any CPU.Deploy.0 = Release|Any CPU
132 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.AppStore|ARM.ActiveCfg = Release|Any CPU
133 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.AppStore|ARM.Build.0 = Release|Any CPU
134 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.AppStore|ARM.Deploy.0 = Release|Any CPU
135 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.AppStore|iPhone.ActiveCfg = Release|Any CPU
136 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.AppStore|iPhone.Build.0 = Release|Any CPU
137 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.AppStore|iPhone.Deploy.0 = Release|Any CPU
138 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
139 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
140 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.AppStore|iPhoneSimulator.Deploy.0 = Release|Any CPU
141 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.AppStore|x64.ActiveCfg = Release|Any CPU
142 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.AppStore|x64.Build.0 = Release|Any CPU
143 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.AppStore|x64.Deploy.0 = Release|Any CPU
144 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.AppStore|x86.ActiveCfg = Release|Any CPU
145 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.AppStore|x86.Build.0 = Release|Any CPU
146 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.AppStore|x86.Deploy.0 = Release|Any CPU
147 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
148 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Debug|Any CPU.Build.0 = Debug|Any CPU
149 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
150 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Debug|ARM.ActiveCfg = Debug|Any CPU
151 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Debug|ARM.Build.0 = Debug|Any CPU
152 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Debug|ARM.Deploy.0 = Debug|Any CPU
153 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Debug|iPhone.ActiveCfg = Debug|Any CPU
154 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Debug|iPhone.Build.0 = Debug|Any CPU
155 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Debug|iPhone.Deploy.0 = Debug|Any CPU
156 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
157 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
158 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
159 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Debug|x64.ActiveCfg = Debug|Any CPU
160 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Debug|x64.Build.0 = Debug|Any CPU
161 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Debug|x64.Deploy.0 = Debug|Any CPU
162 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Debug|x86.ActiveCfg = Debug|Any CPU
163 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Debug|x86.Build.0 = Debug|Any CPU
164 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Debug|x86.Deploy.0 = Debug|Any CPU
165 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Release|Any CPU.ActiveCfg = Release|Any CPU
166 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Release|Any CPU.Build.0 = Release|Any CPU
167 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Release|Any CPU.Deploy.0 = Release|Any CPU
168 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Release|ARM.ActiveCfg = Release|Any CPU
169 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Release|ARM.Build.0 = Release|Any CPU
170 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Release|ARM.Deploy.0 = Release|Any CPU
171 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Release|iPhone.ActiveCfg = Release|Any CPU
172 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Release|iPhone.Build.0 = Release|Any CPU
173 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Release|iPhone.Deploy.0 = Release|Any CPU
174 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
175 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
176 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
177 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Release|x64.ActiveCfg = Release|Any CPU
178 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Release|x64.Build.0 = Release|Any CPU
179 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Release|x64.Deploy.0 = Release|Any CPU
180 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Release|x86.ActiveCfg = Release|Any CPU
181 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Release|x86.Build.0 = Release|Any CPU
182 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8}.Release|x86.Deploy.0 = Release|Any CPU
183 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Ad-Hoc|Any CPU.ActiveCfg = Ad-Hoc|iPhone
184 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Ad-Hoc|ARM.ActiveCfg = Ad-Hoc|iPhone
185 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Ad-Hoc|iPhone.ActiveCfg = Ad-Hoc|iPhone
186 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Ad-Hoc|iPhone.Build.0 = Ad-Hoc|iPhone
187 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Ad-Hoc|iPhoneSimulator
188 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Ad-Hoc|iPhoneSimulator.Build.0 = Ad-Hoc|iPhoneSimulator
189 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Ad-Hoc|x64.ActiveCfg = Ad-Hoc|iPhone
190 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Ad-Hoc|x86.ActiveCfg = Ad-Hoc|iPhone
191 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.AppStore|Any CPU.ActiveCfg = AppStore|iPhone
192 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.AppStore|ARM.ActiveCfg = AppStore|iPhone
193 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.AppStore|iPhone.ActiveCfg = AppStore|iPhone
194 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.AppStore|iPhone.Build.0 = AppStore|iPhone
195 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.AppStore|iPhoneSimulator.ActiveCfg = AppStore|iPhoneSimulator
196 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.AppStore|iPhoneSimulator.Build.0 = AppStore|iPhoneSimulator
197 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.AppStore|x64.ActiveCfg = AppStore|iPhone
198 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.AppStore|x86.ActiveCfg = AppStore|iPhone
199 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator
200 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Debug|ARM.ActiveCfg = Debug|iPhone
201 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Debug|iPhone.ActiveCfg = Debug|iPhone
202 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Debug|iPhone.Build.0 = Debug|iPhone
203 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
204 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
205 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Debug|x64.ActiveCfg = Debug|iPhone
206 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Debug|x86.ActiveCfg = Debug|iPhone
207 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Release|Any CPU.ActiveCfg = Release|iPhone
208 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Release|ARM.ActiveCfg = Release|iPhone
209 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Release|iPhone.ActiveCfg = Release|iPhone
210 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Release|iPhone.Build.0 = Release|iPhone
211 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
212 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
213 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Release|x64.ActiveCfg = Release|iPhone
214 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF}.Release|x86.ActiveCfg = Release|iPhone
215 | {7C65D294-E010-488D-A628-3030A441988E}.Ad-Hoc|Any CPU.ActiveCfg = Release|x64
216 | {7C65D294-E010-488D-A628-3030A441988E}.Ad-Hoc|Any CPU.Build.0 = Release|x64
217 | {7C65D294-E010-488D-A628-3030A441988E}.Ad-Hoc|Any CPU.Deploy.0 = Release|x64
218 | {7C65D294-E010-488D-A628-3030A441988E}.Ad-Hoc|ARM.ActiveCfg = Release|ARM
219 | {7C65D294-E010-488D-A628-3030A441988E}.Ad-Hoc|ARM.Build.0 = Release|ARM
220 | {7C65D294-E010-488D-A628-3030A441988E}.Ad-Hoc|ARM.Deploy.0 = Release|ARM
221 | {7C65D294-E010-488D-A628-3030A441988E}.Ad-Hoc|iPhone.ActiveCfg = Release|x64
222 | {7C65D294-E010-488D-A628-3030A441988E}.Ad-Hoc|iPhone.Build.0 = Release|x64
223 | {7C65D294-E010-488D-A628-3030A441988E}.Ad-Hoc|iPhone.Deploy.0 = Release|x64
224 | {7C65D294-E010-488D-A628-3030A441988E}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|x64
225 | {7C65D294-E010-488D-A628-3030A441988E}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|x64
226 | {7C65D294-E010-488D-A628-3030A441988E}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|x64
227 | {7C65D294-E010-488D-A628-3030A441988E}.Ad-Hoc|x64.ActiveCfg = Release|x64
228 | {7C65D294-E010-488D-A628-3030A441988E}.Ad-Hoc|x64.Build.0 = Release|x64
229 | {7C65D294-E010-488D-A628-3030A441988E}.Ad-Hoc|x64.Deploy.0 = Release|x64
230 | {7C65D294-E010-488D-A628-3030A441988E}.Ad-Hoc|x86.ActiveCfg = Release|x86
231 | {7C65D294-E010-488D-A628-3030A441988E}.Ad-Hoc|x86.Build.0 = Release|x86
232 | {7C65D294-E010-488D-A628-3030A441988E}.Ad-Hoc|x86.Deploy.0 = Release|x86
233 | {7C65D294-E010-488D-A628-3030A441988E}.AppStore|Any CPU.ActiveCfg = Release|x64
234 | {7C65D294-E010-488D-A628-3030A441988E}.AppStore|Any CPU.Build.0 = Release|x64
235 | {7C65D294-E010-488D-A628-3030A441988E}.AppStore|Any CPU.Deploy.0 = Release|x64
236 | {7C65D294-E010-488D-A628-3030A441988E}.AppStore|ARM.ActiveCfg = Release|ARM
237 | {7C65D294-E010-488D-A628-3030A441988E}.AppStore|ARM.Build.0 = Release|ARM
238 | {7C65D294-E010-488D-A628-3030A441988E}.AppStore|ARM.Deploy.0 = Release|ARM
239 | {7C65D294-E010-488D-A628-3030A441988E}.AppStore|iPhone.ActiveCfg = Release|x64
240 | {7C65D294-E010-488D-A628-3030A441988E}.AppStore|iPhone.Build.0 = Release|x64
241 | {7C65D294-E010-488D-A628-3030A441988E}.AppStore|iPhone.Deploy.0 = Release|x64
242 | {7C65D294-E010-488D-A628-3030A441988E}.AppStore|iPhoneSimulator.ActiveCfg = Release|x64
243 | {7C65D294-E010-488D-A628-3030A441988E}.AppStore|iPhoneSimulator.Build.0 = Release|x64
244 | {7C65D294-E010-488D-A628-3030A441988E}.AppStore|iPhoneSimulator.Deploy.0 = Release|x64
245 | {7C65D294-E010-488D-A628-3030A441988E}.AppStore|x64.ActiveCfg = Release|x64
246 | {7C65D294-E010-488D-A628-3030A441988E}.AppStore|x64.Build.0 = Release|x64
247 | {7C65D294-E010-488D-A628-3030A441988E}.AppStore|x64.Deploy.0 = Release|x64
248 | {7C65D294-E010-488D-A628-3030A441988E}.AppStore|x86.ActiveCfg = Release|x86
249 | {7C65D294-E010-488D-A628-3030A441988E}.AppStore|x86.Build.0 = Release|x86
250 | {7C65D294-E010-488D-A628-3030A441988E}.AppStore|x86.Deploy.0 = Release|x86
251 | {7C65D294-E010-488D-A628-3030A441988E}.Debug|Any CPU.ActiveCfg = Debug|x64
252 | {7C65D294-E010-488D-A628-3030A441988E}.Debug|Any CPU.Build.0 = Debug|x64
253 | {7C65D294-E010-488D-A628-3030A441988E}.Debug|Any CPU.Deploy.0 = Debug|x64
254 | {7C65D294-E010-488D-A628-3030A441988E}.Debug|ARM.ActiveCfg = Debug|ARM
255 | {7C65D294-E010-488D-A628-3030A441988E}.Debug|ARM.Build.0 = Debug|ARM
256 | {7C65D294-E010-488D-A628-3030A441988E}.Debug|ARM.Deploy.0 = Debug|ARM
257 | {7C65D294-E010-488D-A628-3030A441988E}.Debug|iPhone.ActiveCfg = Debug|x86
258 | {7C65D294-E010-488D-A628-3030A441988E}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86
259 | {7C65D294-E010-488D-A628-3030A441988E}.Debug|x64.ActiveCfg = Debug|x64
260 | {7C65D294-E010-488D-A628-3030A441988E}.Debug|x64.Build.0 = Debug|x64
261 | {7C65D294-E010-488D-A628-3030A441988E}.Debug|x64.Deploy.0 = Debug|x64
262 | {7C65D294-E010-488D-A628-3030A441988E}.Debug|x86.ActiveCfg = Debug|x86
263 | {7C65D294-E010-488D-A628-3030A441988E}.Debug|x86.Build.0 = Debug|x86
264 | {7C65D294-E010-488D-A628-3030A441988E}.Debug|x86.Deploy.0 = Debug|x86
265 | {7C65D294-E010-488D-A628-3030A441988E}.Release|Any CPU.ActiveCfg = Release|x86
266 | {7C65D294-E010-488D-A628-3030A441988E}.Release|ARM.ActiveCfg = Release|ARM
267 | {7C65D294-E010-488D-A628-3030A441988E}.Release|ARM.Build.0 = Release|ARM
268 | {7C65D294-E010-488D-A628-3030A441988E}.Release|ARM.Deploy.0 = Release|ARM
269 | {7C65D294-E010-488D-A628-3030A441988E}.Release|iPhone.ActiveCfg = Release|x86
270 | {7C65D294-E010-488D-A628-3030A441988E}.Release|iPhoneSimulator.ActiveCfg = Release|x86
271 | {7C65D294-E010-488D-A628-3030A441988E}.Release|x64.ActiveCfg = Release|x64
272 | {7C65D294-E010-488D-A628-3030A441988E}.Release|x64.Build.0 = Release|x64
273 | {7C65D294-E010-488D-A628-3030A441988E}.Release|x64.Deploy.0 = Release|x64
274 | {7C65D294-E010-488D-A628-3030A441988E}.Release|x86.ActiveCfg = Release|x86
275 | {7C65D294-E010-488D-A628-3030A441988E}.Release|x86.Build.0 = Release|x86
276 | {7C65D294-E010-488D-A628-3030A441988E}.Release|x86.Deploy.0 = Release|x86
277 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
278 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
279 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
280 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
281 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
282 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
283 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
284 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
285 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
286 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
287 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
288 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
289 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
290 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.AppStore|Any CPU.Build.0 = Debug|Any CPU
291 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.AppStore|ARM.ActiveCfg = Debug|Any CPU
292 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.AppStore|ARM.Build.0 = Debug|Any CPU
293 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
294 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.AppStore|iPhone.Build.0 = Debug|Any CPU
295 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
296 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
297 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.AppStore|x64.ActiveCfg = Debug|Any CPU
298 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.AppStore|x64.Build.0 = Debug|Any CPU
299 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.AppStore|x86.ActiveCfg = Debug|Any CPU
300 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.AppStore|x86.Build.0 = Debug|Any CPU
301 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
302 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.Debug|Any CPU.Build.0 = Debug|Any CPU
303 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.Debug|ARM.ActiveCfg = Debug|Any CPU
304 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.Debug|ARM.Build.0 = Debug|Any CPU
305 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.Debug|iPhone.ActiveCfg = Debug|Any CPU
306 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.Debug|iPhone.Build.0 = Debug|Any CPU
307 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
308 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
309 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.Debug|x64.ActiveCfg = Debug|Any CPU
310 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.Debug|x64.Build.0 = Debug|Any CPU
311 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.Debug|x86.ActiveCfg = Debug|Any CPU
312 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.Debug|x86.Build.0 = Debug|Any CPU
313 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.Release|Any CPU.ActiveCfg = Release|Any CPU
314 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.Release|Any CPU.Build.0 = Release|Any CPU
315 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.Release|ARM.ActiveCfg = Release|Any CPU
316 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.Release|ARM.Build.0 = Release|Any CPU
317 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.Release|iPhone.ActiveCfg = Release|Any CPU
318 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.Release|iPhone.Build.0 = Release|Any CPU
319 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
320 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
321 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.Release|x64.ActiveCfg = Release|Any CPU
322 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.Release|x64.Build.0 = Release|Any CPU
323 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.Release|x86.ActiveCfg = Release|Any CPU
324 | {62FCF2BC-EB60-47B3-A23F-9DA86FDCB182}.Release|x86.Build.0 = Release|Any CPU
325 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
326 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
327 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
328 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.Ad-Hoc|ARM.Build.0 = Release|Any CPU
329 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
330 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
331 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
332 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
333 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
334 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.Ad-Hoc|x64.Build.0 = Release|Any CPU
335 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
336 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.Ad-Hoc|x86.Build.0 = Release|Any CPU
337 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
338 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.AppStore|Any CPU.Build.0 = Release|Any CPU
339 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.AppStore|ARM.ActiveCfg = Release|Any CPU
340 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.AppStore|ARM.Build.0 = Release|Any CPU
341 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.AppStore|iPhone.ActiveCfg = Release|Any CPU
342 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.AppStore|iPhone.Build.0 = Release|Any CPU
343 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
344 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
345 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.AppStore|x64.ActiveCfg = Release|Any CPU
346 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.AppStore|x64.Build.0 = Release|Any CPU
347 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.AppStore|x86.ActiveCfg = Release|Any CPU
348 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.AppStore|x86.Build.0 = Release|Any CPU
349 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
350 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.Debug|Any CPU.Build.0 = Debug|Any CPU
351 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.Debug|ARM.ActiveCfg = Debug|Any CPU
352 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.Debug|ARM.Build.0 = Debug|Any CPU
353 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.Debug|iPhone.ActiveCfg = Debug|Any CPU
354 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.Debug|iPhone.Build.0 = Debug|Any CPU
355 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
356 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
357 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.Debug|x64.ActiveCfg = Debug|Any CPU
358 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.Debug|x64.Build.0 = Debug|Any CPU
359 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.Debug|x86.ActiveCfg = Debug|Any CPU
360 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.Debug|x86.Build.0 = Debug|Any CPU
361 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.Release|Any CPU.ActiveCfg = Debug|Any CPU
362 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.Release|Any CPU.Build.0 = Debug|Any CPU
363 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.Release|ARM.ActiveCfg = Release|Any CPU
364 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.Release|ARM.Build.0 = Release|Any CPU
365 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.Release|iPhone.ActiveCfg = Release|Any CPU
366 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.Release|iPhone.Build.0 = Release|Any CPU
367 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
368 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
369 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.Release|x64.ActiveCfg = Release|Any CPU
370 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.Release|x64.Build.0 = Release|Any CPU
371 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.Release|x86.ActiveCfg = Release|Any CPU
372 | {996F641E-D375-4DCD-B7D6-63D7A8319D40}.Release|x86.Build.0 = Release|Any CPU
373 | {5D680814-936A-4E2F-A576-AF186411FFEE}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
374 | {5D680814-936A-4E2F-A576-AF186411FFEE}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
375 | {5D680814-936A-4E2F-A576-AF186411FFEE}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
376 | {5D680814-936A-4E2F-A576-AF186411FFEE}.Ad-Hoc|ARM.Build.0 = Release|Any CPU
377 | {5D680814-936A-4E2F-A576-AF186411FFEE}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
378 | {5D680814-936A-4E2F-A576-AF186411FFEE}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
379 | {5D680814-936A-4E2F-A576-AF186411FFEE}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
380 | {5D680814-936A-4E2F-A576-AF186411FFEE}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
381 | {5D680814-936A-4E2F-A576-AF186411FFEE}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
382 | {5D680814-936A-4E2F-A576-AF186411FFEE}.Ad-Hoc|x64.Build.0 = Release|Any CPU
383 | {5D680814-936A-4E2F-A576-AF186411FFEE}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
384 | {5D680814-936A-4E2F-A576-AF186411FFEE}.Ad-Hoc|x86.Build.0 = Release|Any CPU
385 | {5D680814-936A-4E2F-A576-AF186411FFEE}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
386 | {5D680814-936A-4E2F-A576-AF186411FFEE}.AppStore|Any CPU.Build.0 = Release|Any CPU
387 | {5D680814-936A-4E2F-A576-AF186411FFEE}.AppStore|ARM.ActiveCfg = Release|Any CPU
388 | {5D680814-936A-4E2F-A576-AF186411FFEE}.AppStore|ARM.Build.0 = Release|Any CPU
389 | {5D680814-936A-4E2F-A576-AF186411FFEE}.AppStore|iPhone.ActiveCfg = Release|Any CPU
390 | {5D680814-936A-4E2F-A576-AF186411FFEE}.AppStore|iPhone.Build.0 = Release|Any CPU
391 | {5D680814-936A-4E2F-A576-AF186411FFEE}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
392 | {5D680814-936A-4E2F-A576-AF186411FFEE}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
393 | {5D680814-936A-4E2F-A576-AF186411FFEE}.AppStore|x64.ActiveCfg = Release|Any CPU
394 | {5D680814-936A-4E2F-A576-AF186411FFEE}.AppStore|x64.Build.0 = Release|Any CPU
395 | {5D680814-936A-4E2F-A576-AF186411FFEE}.AppStore|x86.ActiveCfg = Release|Any CPU
396 | {5D680814-936A-4E2F-A576-AF186411FFEE}.AppStore|x86.Build.0 = Release|Any CPU
397 | {5D680814-936A-4E2F-A576-AF186411FFEE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
398 | {5D680814-936A-4E2F-A576-AF186411FFEE}.Debug|Any CPU.Build.0 = Debug|Any CPU
399 | {5D680814-936A-4E2F-A576-AF186411FFEE}.Debug|ARM.ActiveCfg = Debug|Any CPU
400 | {5D680814-936A-4E2F-A576-AF186411FFEE}.Debug|ARM.Build.0 = Debug|Any CPU
401 | {5D680814-936A-4E2F-A576-AF186411FFEE}.Debug|iPhone.ActiveCfg = Debug|Any CPU
402 | {5D680814-936A-4E2F-A576-AF186411FFEE}.Debug|iPhone.Build.0 = Debug|Any CPU
403 | {5D680814-936A-4E2F-A576-AF186411FFEE}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
404 | {5D680814-936A-4E2F-A576-AF186411FFEE}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
405 | {5D680814-936A-4E2F-A576-AF186411FFEE}.Debug|x64.ActiveCfg = Debug|Any CPU
406 | {5D680814-936A-4E2F-A576-AF186411FFEE}.Debug|x64.Build.0 = Debug|Any CPU
407 | {5D680814-936A-4E2F-A576-AF186411FFEE}.Debug|x86.ActiveCfg = Debug|Any CPU
408 | {5D680814-936A-4E2F-A576-AF186411FFEE}.Debug|x86.Build.0 = Debug|Any CPU
409 | {5D680814-936A-4E2F-A576-AF186411FFEE}.Release|Any CPU.ActiveCfg = Release|Any CPU
410 | {5D680814-936A-4E2F-A576-AF186411FFEE}.Release|Any CPU.Build.0 = Release|Any CPU
411 | {5D680814-936A-4E2F-A576-AF186411FFEE}.Release|ARM.ActiveCfg = Release|Any CPU
412 | {5D680814-936A-4E2F-A576-AF186411FFEE}.Release|ARM.Build.0 = Release|Any CPU
413 | {5D680814-936A-4E2F-A576-AF186411FFEE}.Release|iPhone.ActiveCfg = Release|Any CPU
414 | {5D680814-936A-4E2F-A576-AF186411FFEE}.Release|iPhone.Build.0 = Release|Any CPU
415 | {5D680814-936A-4E2F-A576-AF186411FFEE}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
416 | {5D680814-936A-4E2F-A576-AF186411FFEE}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
417 | {5D680814-936A-4E2F-A576-AF186411FFEE}.Release|x64.ActiveCfg = Release|Any CPU
418 | {5D680814-936A-4E2F-A576-AF186411FFEE}.Release|x64.Build.0 = Release|Any CPU
419 | {5D680814-936A-4E2F-A576-AF186411FFEE}.Release|x86.ActiveCfg = Release|Any CPU
420 | {5D680814-936A-4E2F-A576-AF186411FFEE}.Release|x86.Build.0 = Release|Any CPU
421 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
422 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
423 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
424 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
425 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
426 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
427 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
428 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
429 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
430 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
431 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
432 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
433 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
434 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.AppStore|Any CPU.Build.0 = Debug|Any CPU
435 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.AppStore|ARM.ActiveCfg = Debug|Any CPU
436 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.AppStore|ARM.Build.0 = Debug|Any CPU
437 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
438 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.AppStore|iPhone.Build.0 = Debug|Any CPU
439 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
440 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
441 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.AppStore|x64.ActiveCfg = Debug|Any CPU
442 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.AppStore|x64.Build.0 = Debug|Any CPU
443 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.AppStore|x86.ActiveCfg = Debug|Any CPU
444 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.AppStore|x86.Build.0 = Debug|Any CPU
445 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
446 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.Debug|Any CPU.Build.0 = Debug|Any CPU
447 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.Debug|ARM.ActiveCfg = Debug|Any CPU
448 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.Debug|ARM.Build.0 = Debug|Any CPU
449 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.Debug|iPhone.ActiveCfg = Debug|Any CPU
450 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.Debug|iPhone.Build.0 = Debug|Any CPU
451 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
452 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
453 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.Debug|x64.ActiveCfg = Debug|Any CPU
454 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.Debug|x64.Build.0 = Debug|Any CPU
455 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.Debug|x86.ActiveCfg = Debug|Any CPU
456 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.Debug|x86.Build.0 = Debug|Any CPU
457 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.Release|Any CPU.ActiveCfg = Release|Any CPU
458 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.Release|Any CPU.Build.0 = Release|Any CPU
459 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.Release|ARM.ActiveCfg = Release|Any CPU
460 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.Release|ARM.Build.0 = Release|Any CPU
461 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.Release|iPhone.ActiveCfg = Release|Any CPU
462 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.Release|iPhone.Build.0 = Release|Any CPU
463 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
464 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
465 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.Release|x64.ActiveCfg = Release|Any CPU
466 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.Release|x64.Build.0 = Release|Any CPU
467 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.Release|x86.ActiveCfg = Release|Any CPU
468 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9}.Release|x86.Build.0 = Release|Any CPU
469 | EndGlobalSection
470 | GlobalSection(SolutionProperties) = preSolution
471 | HideSolutionNode = FALSE
472 | EndGlobalSection
473 | GlobalSection(NestedProjects) = preSolution
474 | {2CFD040B-DC2B-4FCE-951C-3D33C68C998B} = {14129AEA-4608-40BB-8762-0166663C9846}
475 | {203BC9DA-FB13-4C55-803E-F30F450BDAF8} = {14129AEA-4608-40BB-8762-0166663C9846}
476 | {F88CEC7D-6C88-4D16-AFDE-F3DFB3CBF0DF} = {14129AEA-4608-40BB-8762-0166663C9846}
477 | {7C65D294-E010-488D-A628-3030A441988E} = {14129AEA-4608-40BB-8762-0166663C9846}
478 | {996F641E-D375-4DCD-B7D6-63D7A8319D40} = {14129AEA-4608-40BB-8762-0166663C9846}
479 | {5D680814-936A-4E2F-A576-AF186411FFEE} = {14129AEA-4608-40BB-8762-0166663C9846}
480 | {9E85A1E6-ED3C-4D57-9DAE-0DB491F2DEE9} = {14129AEA-4608-40BB-8762-0166663C9846}
481 | EndGlobalSection
482 | GlobalSection(ExtensibilityGlobals) = postSolution
483 | SolutionGuid = {307605AD-A7D0-47FC-A69D-3E760CDAEC74}
484 | EndGlobalSection
485 | EndGlobal
486 |
--------------------------------------------------------------------------------