mirror of
https://github.com/farcasclaudiu/SmartThreadPool.git
synced 2026-06-22 09:01:19 +03:00
Moved to VS 2012 + Added support to Windows Phone
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
@@ -17,9 +18,8 @@
|
|||||||
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
||||||
<FormFactorID>
|
<FormFactorID>
|
||||||
</FormFactorID>
|
</FormFactorID>
|
||||||
<FileUpgradeFlags>
|
<FileUpgradeFlags>0</FileUpgradeFlags>
|
||||||
</FileUpgradeFlags>
|
<OldToolsVersion>4.0</OldToolsVersion>
|
||||||
<OldToolsVersion>2.0</OldToolsVersion>
|
|
||||||
<NativePlatformName>Windows CE</NativePlatformName>
|
<NativePlatformName>Windows CE</NativePlatformName>
|
||||||
<UpgradeBackupLocation>
|
<UpgradeBackupLocation>
|
||||||
</UpgradeBackupLocation>
|
</UpgradeBackupLocation>
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ProjectType>Local</ProjectType>
|
<ProjectType>Local</ProjectType>
|
||||||
<ProductVersion>9.0.30729</ProductVersion>
|
<ProductVersion>9.0.30729</ProductVersion>
|
||||||
@@ -24,7 +25,8 @@
|
|||||||
</FileUpgradeFlags>
|
</FileUpgradeFlags>
|
||||||
<UpgradeBackupLocation>
|
<UpgradeBackupLocation>
|
||||||
</UpgradeBackupLocation>
|
</UpgradeBackupLocation>
|
||||||
<OldToolsVersion>2.0</OldToolsVersion>
|
<OldToolsVersion>3.5</OldToolsVersion>
|
||||||
|
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<OutputPath>bin\Debug\</OutputPath>
|
<OutputPath>bin\Debug\</OutputPath>
|
||||||
|
|||||||
@@ -1,4 +1,8 @@
|
|||||||
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup Condition="'$(MSBuildToolsVersion)' == '3.5'">
|
||||||
|
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||||
|
</PropertyGroup>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
@@ -10,7 +14,7 @@
|
|||||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
<RootNamespace>STPSLDemo</RootNamespace>
|
<RootNamespace>STPSLDemo</RootNamespace>
|
||||||
<AssemblyName>STPSLDemo</AssemblyName>
|
<AssemblyName>STPSLDemo</AssemblyName>
|
||||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v3.0</TargetFrameworkVersion>
|
||||||
<SilverlightApplication>true</SilverlightApplication>
|
<SilverlightApplication>true</SilverlightApplication>
|
||||||
<SupportedCultures>
|
<SupportedCultures>
|
||||||
</SupportedCultures>
|
</SupportedCultures>
|
||||||
@@ -28,6 +32,8 @@
|
|||||||
<OldToolsVersion>3.5</OldToolsVersion>
|
<OldToolsVersion>3.5</OldToolsVersion>
|
||||||
<UpgradeBackupLocation>
|
<UpgradeBackupLocation>
|
||||||
</UpgradeBackupLocation>
|
</UpgradeBackupLocation>
|
||||||
|
<TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
|
||||||
|
<SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
@@ -82,26 +88,38 @@
|
|||||||
<ApplicationDefinition Include="App.xaml">
|
<ApplicationDefinition Include="App.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
</ApplicationDefinition>
|
</ApplicationDefinition>
|
||||||
<Page Include="Groupbox.xaml">
|
<Page Include="Groupbox.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
</Page>
|
</Page>
|
||||||
<Page Include="Page.xaml">
|
<Page Include="Page.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
</Page>
|
</Page>
|
||||||
<Page Include="SpinButton.xaml">
|
<Page Include="SpinButton.xaml">
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
</Page>
|
</Page>
|
||||||
<Page Include="UsageControl.xaml">
|
<Page Include="UsageControl.xaml">
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
</Page>
|
</Page>
|
||||||
<Page Include="UsageHistoryControl.xaml">
|
<Page Include="UsageHistoryControl.xaml">
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@@ -128,7 +146,7 @@
|
|||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</Resource>
|
</Resource>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Silverlight\v3.0\Microsoft.Silverlight.CSharp.targets" Condition="" />
|
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Silverlight\$(SilverlightVersion)\Microsoft.Silverlight.CSharp.targets" />
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
Other similar extension points exist, see Microsoft.Common.targets.
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
<Target Name="BeforeBuild">
|
<Target Name="BeforeBuild">
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ProjectType>Local</ProjectType>
|
<ProjectType>Local</ProjectType>
|
||||||
<ProductVersion>9.0.30729</ProductVersion>
|
<ProductVersion>9.0.30729</ProductVersion>
|
||||||
@@ -26,7 +27,7 @@
|
|||||||
</FileUpgradeFlags>
|
</FileUpgradeFlags>
|
||||||
<UpgradeBackupLocation>
|
<UpgradeBackupLocation>
|
||||||
</UpgradeBackupLocation>
|
</UpgradeBackupLocation>
|
||||||
<OldToolsVersion>2.0</OldToolsVersion>
|
<OldToolsVersion>3.5</OldToolsVersion>
|
||||||
<IsWebBootstrapper>true</IsWebBootstrapper>
|
<IsWebBootstrapper>true</IsWebBootstrapper>
|
||||||
<PublishUrl>http://localhost/STPTests/</PublishUrl>
|
<PublishUrl>http://localhost/STPTests/</PublishUrl>
|
||||||
<Install>true</Install>
|
<Install>true</Install>
|
||||||
@@ -42,6 +43,7 @@
|
|||||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||||
<UseApplicationTrust>false</UseApplicationTrust>
|
<UseApplicationTrust>false</UseApplicationTrust>
|
||||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||||
|
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<OutputPath>bin\Debug\</OutputPath>
|
<OutputPath>bin\Debug\</OutputPath>
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
<Application
|
||||||
|
x:Class="STPWPDemo.App"
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
|
||||||
|
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" xmlns:System="clr-namespace:System;assembly=mscorlib">
|
||||||
|
|
||||||
|
<Application.ApplicationLifetimeObjects>
|
||||||
|
<!--Required object that handles lifetime events for the application-->
|
||||||
|
<shell:PhoneApplicationService
|
||||||
|
Launching="Application_Launching" Closing="Application_Closing"
|
||||||
|
Activated="Application_Activated" Deactivated="Application_Deactivated"/>
|
||||||
|
</Application.ApplicationLifetimeObjects>
|
||||||
|
|
||||||
|
<!--Application Resources-->
|
||||||
|
<Application.Resources>
|
||||||
|
<System:Double x:Key="PhoneFontSizeNormal" >25</System:Double>
|
||||||
|
</Application.Resources>
|
||||||
|
|
||||||
|
</Application>
|
||||||
@@ -0,0 +1,142 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
using System.Windows.Documents;
|
||||||
|
using System.Windows.Input;
|
||||||
|
using System.Windows.Media;
|
||||||
|
using System.Windows.Media.Animation;
|
||||||
|
using System.Windows.Navigation;
|
||||||
|
using System.Windows.Shapes;
|
||||||
|
using Microsoft.Phone.Controls;
|
||||||
|
using Microsoft.Phone.Shell;
|
||||||
|
|
||||||
|
namespace STPWPDemo
|
||||||
|
{
|
||||||
|
public partial class App : Application
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Provides easy access to the root frame of the Phone Application.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>The root frame of the Phone Application.</returns>
|
||||||
|
public PhoneApplicationFrame RootFrame { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Constructor for the Application object.
|
||||||
|
/// </summary>
|
||||||
|
public App()
|
||||||
|
{
|
||||||
|
// Global handler for uncaught exceptions.
|
||||||
|
UnhandledException += Application_UnhandledException;
|
||||||
|
|
||||||
|
// Standard Silverlight initialization
|
||||||
|
InitializeComponent();
|
||||||
|
|
||||||
|
// Phone-specific initialization
|
||||||
|
InitializePhoneApplication();
|
||||||
|
|
||||||
|
// Show graphics profiling information while debugging.
|
||||||
|
if (System.Diagnostics.Debugger.IsAttached)
|
||||||
|
{
|
||||||
|
// Display the current frame rate counters.
|
||||||
|
Application.Current.Host.Settings.EnableFrameRateCounter = true;
|
||||||
|
|
||||||
|
// Show the areas of the app that are being redrawn in each frame.
|
||||||
|
//Application.Current.Host.Settings.EnableRedrawRegions = true;
|
||||||
|
|
||||||
|
// Enable non-production analysis visualization mode,
|
||||||
|
// which shows areas of a page that are handed off to GPU with a colored overlay.
|
||||||
|
//Application.Current.Host.Settings.EnableCacheVisualization = true;
|
||||||
|
|
||||||
|
// Disable the application idle detection by setting the UserIdleDetectionMode property of the
|
||||||
|
// application's PhoneApplicationService object to Disabled.
|
||||||
|
// Caution:- Use this under debug mode only. Application that disables user idle detection will continue to run
|
||||||
|
// and consume battery power when the user is not using the phone.
|
||||||
|
PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Code to execute when the application is launching (eg, from Start)
|
||||||
|
// This code will not execute when the application is reactivated
|
||||||
|
private void Application_Launching(object sender, LaunchingEventArgs e)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
// Code to execute when the application is activated (brought to foreground)
|
||||||
|
// This code will not execute when the application is first launched
|
||||||
|
private void Application_Activated(object sender, ActivatedEventArgs e)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
// Code to execute when the application is deactivated (sent to background)
|
||||||
|
// This code will not execute when the application is closing
|
||||||
|
private void Application_Deactivated(object sender, DeactivatedEventArgs e)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
// Code to execute when the application is closing (eg, user hit Back)
|
||||||
|
// This code will not execute when the application is deactivated
|
||||||
|
private void Application_Closing(object sender, ClosingEventArgs e)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
// Code to execute if a navigation fails
|
||||||
|
private void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e)
|
||||||
|
{
|
||||||
|
if (System.Diagnostics.Debugger.IsAttached)
|
||||||
|
{
|
||||||
|
// A navigation has failed; break into the debugger
|
||||||
|
System.Diagnostics.Debugger.Break();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Code to execute on Unhandled Exceptions
|
||||||
|
private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
|
||||||
|
{
|
||||||
|
if (System.Diagnostics.Debugger.IsAttached)
|
||||||
|
{
|
||||||
|
// An unhandled exception has occurred; break into the debugger
|
||||||
|
System.Diagnostics.Debugger.Break();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Phone application initialization
|
||||||
|
|
||||||
|
// Avoid double-initialization
|
||||||
|
private bool phoneApplicationInitialized = false;
|
||||||
|
|
||||||
|
// Do not add any additional code to this method
|
||||||
|
private void InitializePhoneApplication()
|
||||||
|
{
|
||||||
|
if (phoneApplicationInitialized)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Create the frame but don't set it as RootVisual yet; this allows the splash
|
||||||
|
// screen to remain active until the application is ready to render.
|
||||||
|
RootFrame = new PhoneApplicationFrame();
|
||||||
|
RootFrame.Navigated += CompleteInitializePhoneApplication;
|
||||||
|
|
||||||
|
// Handle navigation failures
|
||||||
|
RootFrame.NavigationFailed += RootFrame_NavigationFailed;
|
||||||
|
|
||||||
|
// Ensure we don't initialize again
|
||||||
|
phoneApplicationInitialized = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Do not add any additional code to this method
|
||||||
|
private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e)
|
||||||
|
{
|
||||||
|
// Set the root visual to allow the application to render
|
||||||
|
if (RootVisual != RootFrame)
|
||||||
|
RootVisual = RootFrame;
|
||||||
|
|
||||||
|
// Remove this handler since it is no longer needed
|
||||||
|
RootFrame.Navigated -= CompleteInitializePhoneApplication;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 1.8 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 3.4 KiB |
@@ -0,0 +1,62 @@
|
|||||||
|
<phone:PhoneApplicationPage
|
||||||
|
x:Class="STPWPDemo.MainPage"
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
|
||||||
|
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
|
||||||
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
|
mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768"
|
||||||
|
FontFamily="{StaticResource PhoneFontFamilyNormal}"
|
||||||
|
FontSize="{StaticResource PhoneFontSizeNormal}"
|
||||||
|
Foreground="{StaticResource PhoneForegroundBrush}"
|
||||||
|
SupportedOrientations="Portrait" Orientation="Portrait"
|
||||||
|
shell:SystemTray.IsVisible="True" xmlns:my="clr-namespace:STPWPDemo">
|
||||||
|
|
||||||
|
<!--LayoutRoot is the root grid where all page content is placed-->
|
||||||
|
<Grid x:Name="LayoutRoot" Background="Transparent">
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
<RowDefinition Height="*"/>
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
|
||||||
|
<!--TitlePanel contains the name of the application and page title-->
|
||||||
|
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
|
||||||
|
<TextBlock x:Name="ApplicationTitle" Text="SmarthThreadPool Demo" Style="{StaticResource PhoneTextNormalStyle}"/>
|
||||||
|
</StackPanel>
|
||||||
|
|
||||||
|
<!--ContentPanel - place additional content here-->
|
||||||
|
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
|
||||||
|
<my:UsageControl HorizontalAlignment="Left" Margin="12,6,0,0" x:Name="usageControl1" VerticalAlignment="Top" Height="121" Maximum="10" Value1="3" Value2="6"/>
|
||||||
|
<my:UsageHistoryControl Height="121" HorizontalAlignment="Left" Margin="56,6,0,0" x:Name="usageHistoryControl1" VerticalAlignment="Top" Width="394" />
|
||||||
|
<Button Content="Start" Height="90" HorizontalAlignment="Left" Margin="0,600,0,0" Name="btnStart" VerticalAlignment="Top" Width="188" Click="btnStart_Click" />
|
||||||
|
<TextBlock Height="35" HorizontalAlignment="Left" Margin="12,170,0,0" x:Name="textBlock1" Text="Threads in pool" VerticalAlignment="Top" Width="297" Foreground="Red"/>
|
||||||
|
<TextBlock Height="35" HorizontalAlignment="Left" Margin="12,220,0,0" x:Name="textBlock2" Text="Used threads" VerticalAlignment="Top" Width="297" Foreground="Green"/>
|
||||||
|
<my:SpinTextBlock Height="35" HorizontalAlignment="Left" Margin="12,292,0,0" x:Name="spinMinThreads" Text="Minimum threads" VerticalAlignment="Top" Width="297" Decrement="spinMinThreads_Decrement" Increment="spinMinThreads_Increment" />
|
||||||
|
<my:SpinTextBlock Height="35" HorizontalAlignment="Left" Margin="12,356,0,0" x:Name="spinMaxThreads" Text="Maximum threads" VerticalAlignment="Top" Width="297" Increment="spinMaxThreads_Increment" Decrement="spinMaxThreads_Decrement" />
|
||||||
|
<my:SpinTextBlock Height="35" HorizontalAlignment="Left" Margin="12,420,0,0" x:Name="spinIdleTimeout" Text="Idle timeout (Seconds)" VerticalAlignment="Top" Width="297" Decrement="spinIdleTimeout_Decrement" Increment="spinIdleTimeout_Increment" />
|
||||||
|
<my:SpinTextBlock Height="35" HorizontalAlignment="Left" Margin="12,482,0,0" x:Name="spinWorkItemPerSec" Text="Work Items/sec" VerticalAlignment="Top" Width="297" Decrement="spinWorkItemPerSec_Decrement" Increment="spinWorkItemPerSec_Increment" />
|
||||||
|
<my:SpinTextBlock Height="35" HorizontalAlignment="Left" Margin="12,548,0,0" x:Name="spinWorkItemDuration" Text="WorkItem duration (ms)" VerticalAlignment="Top" Width="297" Decrement="spinWorkItemDuration_Decrement" Increment="spinWorkItemDuration_Increment" />
|
||||||
|
<TextBlock Height="35" HorizontalAlignment="Left" Margin="345,173,0,0" Name="txtThreadsInPool" Text="0" VerticalAlignment="Top" Width="69" />
|
||||||
|
<TextBlock Height="35" HorizontalAlignment="Left" Margin="345,223,0,0" Name="txtUsedThreads" Text="0" VerticalAlignment="Top" Width="69" />
|
||||||
|
<TextBlock Height="35" HorizontalAlignment="Left" Margin="342,289,0,0" Name="txtMinThreads" Text="0" VerticalAlignment="Top" Width="92" />
|
||||||
|
<TextBlock Height="35" HorizontalAlignment="Left" Margin="342,356,0,0" Name="txtMaxThreads" Text="5" VerticalAlignment="Top" Width="92" />
|
||||||
|
<TextBlock Height="35" HorizontalAlignment="Left" Margin="342,420,0,0" Name="txtIdleTimeout" Text="10" VerticalAlignment="Top" Width="92" />
|
||||||
|
<TextBlock Height="35" HorizontalAlignment="Left" Margin="342,482,0,0" Name="txtWorkItemPerSec" Text="1" VerticalAlignment="Top" Width="92" />
|
||||||
|
<TextBlock Height="35" HorizontalAlignment="Left" Margin="342,548,0,0" Name="txtWorkItemDuration" Text="100" VerticalAlignment="Top" Width="92" />
|
||||||
|
</Grid>
|
||||||
|
</Grid>
|
||||||
|
|
||||||
|
<!--Sample code showing usage of ApplicationBar-->
|
||||||
|
<!--<phone:PhoneApplicationPage.ApplicationBar>
|
||||||
|
<shell:ApplicationBar IsVisible="True" IsMenuEnabled="True">
|
||||||
|
<shell:ApplicationBarIconButton IconUri="/Images/appbar_button1.png" Text="Button 1"/>
|
||||||
|
<shell:ApplicationBarIconButton IconUri="/Images/appbar_button2.png" Text="Button 2"/>
|
||||||
|
<shell:ApplicationBar.MenuItems>
|
||||||
|
<shell:ApplicationBarMenuItem Text="MenuItem 1"/>
|
||||||
|
<shell:ApplicationBarMenuItem Text="MenuItem 2"/>
|
||||||
|
</shell:ApplicationBar.MenuItems>
|
||||||
|
</shell:ApplicationBar>
|
||||||
|
</phone:PhoneApplicationPage.ApplicationBar>-->
|
||||||
|
|
||||||
|
</phone:PhoneApplicationPage>
|
||||||
@@ -0,0 +1,244 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
using System.Windows.Documents;
|
||||||
|
using System.Windows.Input;
|
||||||
|
using System.Windows.Media;
|
||||||
|
using System.Windows.Media.Animation;
|
||||||
|
using System.Windows.Shapes;
|
||||||
|
using System.Windows.Threading;
|
||||||
|
using Amib.Threading;
|
||||||
|
using Microsoft.Phone.Controls;
|
||||||
|
|
||||||
|
namespace STPWPDemo
|
||||||
|
{
|
||||||
|
public partial class MainPage : PhoneApplicationPage
|
||||||
|
{
|
||||||
|
private const int MaxThreads = 10;
|
||||||
|
|
||||||
|
private readonly DispatcherTimer _timer;
|
||||||
|
|
||||||
|
private bool _running = false;
|
||||||
|
private SmartThreadPool _stp;
|
||||||
|
private readonly Thread _producer;
|
||||||
|
private int _workItemPerSec;
|
||||||
|
private int _workItemDuration;
|
||||||
|
private readonly AutoResetEvent _wakeupEvent = new AutoResetEvent(false);
|
||||||
|
|
||||||
|
// Constructork
|
||||||
|
public MainPage()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
|
||||||
|
_timer = new DispatcherTimer();
|
||||||
|
_timer.Interval = new TimeSpan(0, 0, 0, 0, 500);
|
||||||
|
_timer.Tick += _timer_Tick;
|
||||||
|
_timer.Start();
|
||||||
|
|
||||||
|
_producer = new Thread(WorkItemsProducer);
|
||||||
|
_producer.IsBackground = true;
|
||||||
|
_workItemDuration = Convert.ToInt32(txtWorkItemDuration.Text);
|
||||||
|
_workItemPerSec = Convert.ToInt32(txtWorkItemPerSec.Text);
|
||||||
|
|
||||||
|
usageControl1.Visibility = Visibility.Visible;
|
||||||
|
usageControl1.Maximum = MaxThreads;
|
||||||
|
usageHistoryControl1.Maximum = MaxThreads;
|
||||||
|
|
||||||
|
usageControl1.Maximum = Convert.ToInt32(txtMaxThreads.Text);
|
||||||
|
usageControl1.Value1 = 0;
|
||||||
|
usageControl1.Value2 = 0;
|
||||||
|
|
||||||
|
_producer.Start();
|
||||||
|
}
|
||||||
|
|
||||||
|
void _timer_Tick(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
SmartThreadPool stp = _stp;
|
||||||
|
if (null == stp)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int threadsInUse = (int)_stp.PerformanceCountersReader.InUseThreads;
|
||||||
|
int threadsInPool = (int)_stp.PerformanceCountersReader.ActiveThreads;
|
||||||
|
|
||||||
|
txtUsedThreads.Text = threadsInUse.ToString();
|
||||||
|
txtThreadsInPool.Text = threadsInPool.ToString();
|
||||||
|
usageControl1.Value1 = threadsInUse;
|
||||||
|
usageControl1.Value2 = threadsInPool;
|
||||||
|
usageHistoryControl1.AddValues(threadsInUse, threadsInPool);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void btnStart_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if (_running)
|
||||||
|
{
|
||||||
|
_wakeupEvent.Set();
|
||||||
|
_stp.Cancel();
|
||||||
|
_stp.Shutdown(false, 5000);
|
||||||
|
_stp = null;
|
||||||
|
btnStart.Content = "Start";
|
||||||
|
//txtIdleTimeout.Enabled = true;
|
||||||
|
_running = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
usageHistoryControl1.Reset();
|
||||||
|
usageControl1.Value1 = 0;
|
||||||
|
usageControl1.Value2 = 0;
|
||||||
|
_wakeupEvent.Set();
|
||||||
|
_running = true;
|
||||||
|
btnStart.Content = "Stop";
|
||||||
|
//txtIdleTimeout.Enabled = false;
|
||||||
|
STPStartInfo stpStartInfo = new STPStartInfo()
|
||||||
|
{
|
||||||
|
MinWorkerThreads = Convert.ToInt32(txtMinThreads.Text),
|
||||||
|
MaxWorkerThreads = Convert.ToInt32(txtMaxThreads.Text),
|
||||||
|
IdleTimeout = Convert.ToInt32(txtIdleTimeout.Text) * 1000,
|
||||||
|
EnableLocalPerformanceCounters = true,
|
||||||
|
};
|
||||||
|
|
||||||
|
_stp = new SmartThreadPool(stpStartInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void WorkItemsProducer()
|
||||||
|
{
|
||||||
|
int timeout = _workItemPerSec == 0 ? Timeout.Infinite : (1000 / _workItemPerSec);
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
bool signal = _wakeupEvent.WaitOne(timeout);
|
||||||
|
if (!signal)
|
||||||
|
{
|
||||||
|
SmartThreadPool stp = _stp;
|
||||||
|
if (stp != null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
stp.QueueWorkItem(Sleep);
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// UI changed _workItemPerSec
|
||||||
|
int workItemPerSec = _workItemPerSec;
|
||||||
|
timeout = workItemPerSec == 0 ? Timeout.Infinite : (1000 / workItemPerSec);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Sleep()
|
||||||
|
{
|
||||||
|
Thread.Sleep(_workItemDuration);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void spinMinThreads_Decrement(object sender, EventArgs eventArgs)
|
||||||
|
{
|
||||||
|
int minThreads = Step(txtMinThreads, 0, MaxThreads, -1);
|
||||||
|
if (_stp != null)
|
||||||
|
{
|
||||||
|
_stp.MinThreads = minThreads;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void spinMinThreads_Increment(object sender, EventArgs eventArgs)
|
||||||
|
{
|
||||||
|
int minThreads = Step(txtMinThreads, 0, Convert.ToInt32(txtMaxThreads.Text), +1);
|
||||||
|
if (_stp != null)
|
||||||
|
{
|
||||||
|
_stp.MinThreads = minThreads;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void spinMaxThreads_Decrement(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
int maxThreads = Step(txtMaxThreads, Convert.ToInt32(txtMinThreads.Text), 10, -1);
|
||||||
|
if (_stp != null)
|
||||||
|
{
|
||||||
|
_stp.MaxThreads = maxThreads;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void spinMaxThreads_Increment(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
int maxThreads = Step(txtMaxThreads, 0, MaxThreads, +1);
|
||||||
|
usageControl1.Maximum = maxThreads;
|
||||||
|
usageHistoryControl1.Maximum = maxThreads;
|
||||||
|
if (_stp != null)
|
||||||
|
{
|
||||||
|
_stp.MaxThreads = maxThreads;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void spinIdleTimeout_Decrement(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Step(txtIdleTimeout, 0, 10, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void spinIdleTimeout_Increment(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Step(txtIdleTimeout, 0, 10, +1);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void spinWorkItemPerSec_Decrement(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
int workItemPerSec = _workItemPerSec;
|
||||||
|
_workItemPerSec = Step(txtWorkItemPerSec, 0, 10, -1);
|
||||||
|
if (workItemPerSec != _workItemPerSec)
|
||||||
|
{
|
||||||
|
_wakeupEvent.Set();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void spinWorkItemPerSec_Increment(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
int workItemPerSec = _workItemPerSec;
|
||||||
|
_workItemPerSec = Step(txtWorkItemPerSec, 0, 10, +1);
|
||||||
|
if (workItemPerSec != _workItemPerSec)
|
||||||
|
{
|
||||||
|
_wakeupEvent.Set();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void spinWorkItemDuration_Decrement(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
_workItemDuration = Step(txtWorkItemDuration, 0, 1000, -100);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void spinWorkItemDuration_Increment(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
_workItemDuration = Step(txtWorkItemDuration, 0, 1000, +100);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int Step(TextBlock txtField, int minValue, int maxValue, int change)
|
||||||
|
{
|
||||||
|
int value = Convert.ToInt32(txtField.Text);
|
||||||
|
|
||||||
|
value += change;
|
||||||
|
|
||||||
|
if (value < minValue)
|
||||||
|
{
|
||||||
|
value = minValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (value > maxValue)
|
||||||
|
{
|
||||||
|
value = maxValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
txtField.Text = value.ToString();
|
||||||
|
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
>
|
||||||
|
<Deployment.Parts>
|
||||||
|
</Deployment.Parts>
|
||||||
|
</Deployment>
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
using System.Reflection;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Resources;
|
||||||
|
|
||||||
|
// General Information about an assembly is controlled through the following
|
||||||
|
// set of attributes. Change these attribute values to modify the information
|
||||||
|
// associated with an assembly.
|
||||||
|
[assembly: AssemblyTitle("STPWPDemo")]
|
||||||
|
[assembly: AssemblyDescription("")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCompany("")]
|
||||||
|
[assembly: AssemblyProduct("STPWPDemo")]
|
||||||
|
[assembly: AssemblyCopyright("Copyright © 2012")]
|
||||||
|
[assembly: AssemblyTrademark("")]
|
||||||
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
// Setting ComVisible to false makes the types in this assembly not visible
|
||||||
|
// to COM components. If you need to access a type in this assembly from
|
||||||
|
// COM, set the ComVisible attribute to true on that type.
|
||||||
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
|
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||||
|
[assembly: Guid("331431de-7dae-4e90-910a-5c8920b16fae")]
|
||||||
|
|
||||||
|
// Version information for an assembly consists of the following four values:
|
||||||
|
//
|
||||||
|
// Major Version
|
||||||
|
// Minor Version
|
||||||
|
// Build Number
|
||||||
|
// Revision
|
||||||
|
//
|
||||||
|
// You can specify all the values or you can default the Revision and Build Numbers
|
||||||
|
// by using the '*' as shown below:
|
||||||
|
[assembly: AssemblyVersion("1.0.0.0")]
|
||||||
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||||
|
[assembly: NeutralResourcesLanguageAttribute("en-US")]
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<Deployment xmlns="http://schemas.microsoft.com/windowsphone/2009/deployment" AppPlatformVersion="7.1">
|
||||||
|
<App xmlns="" ProductID="{ae084ade-0fbd-498b-b14e-c2d10925116d}" Title="STPWPDemo" RuntimeType="Silverlight" Version="1.0.0.0" Genre="apps.normal" Author="STPWPDemo author" Description="Sample description" Publisher="STPWPDemo">
|
||||||
|
<IconPath IsRelative="true" IsResource="false">ApplicationIcon.png</IconPath>
|
||||||
|
<Capabilities>
|
||||||
|
<Capability Name="ID_CAP_GAMERSERVICES"/>
|
||||||
|
<Capability Name="ID_CAP_IDENTITY_DEVICE"/>
|
||||||
|
<Capability Name="ID_CAP_IDENTITY_USER"/>
|
||||||
|
<Capability Name="ID_CAP_LOCATION"/>
|
||||||
|
<Capability Name="ID_CAP_MEDIALIB"/>
|
||||||
|
<Capability Name="ID_CAP_MICROPHONE"/>
|
||||||
|
<Capability Name="ID_CAP_NETWORKING"/>
|
||||||
|
<Capability Name="ID_CAP_PHONEDIALER"/>
|
||||||
|
<Capability Name="ID_CAP_PUSH_NOTIFICATION"/>
|
||||||
|
<Capability Name="ID_CAP_SENSORS"/>
|
||||||
|
<Capability Name="ID_CAP_WEBBROWSERCOMPONENT"/>
|
||||||
|
<Capability Name="ID_CAP_ISV_CAMERA"/>
|
||||||
|
<Capability Name="ID_CAP_CONTACTS"/>
|
||||||
|
<Capability Name="ID_CAP_APPOINTMENTS"/>
|
||||||
|
</Capabilities>
|
||||||
|
<Tasks>
|
||||||
|
<DefaultTask Name ="_default" NavigationPage="MainPage.xaml"/>
|
||||||
|
</Tasks>
|
||||||
|
<Tokens>
|
||||||
|
<PrimaryToken TokenID="STPWPDemoToken" TaskName="_default">
|
||||||
|
<TemplateType5>
|
||||||
|
<BackgroundImageURI IsRelative="true" IsResource="false">Background.png</BackgroundImageURI>
|
||||||
|
<Count>0</Count>
|
||||||
|
<Title>STPWPDemo</Title>
|
||||||
|
</TemplateType5>
|
||||||
|
</PrimaryToken>
|
||||||
|
</Tokens>
|
||||||
|
</App>
|
||||||
|
</Deployment>
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 701 B |
Binary file not shown.
|
After Width: | Height: | Size: 735 B |
Binary file not shown.
|
After Width: | Height: | Size: 710 B |
@@ -0,0 +1,132 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
<ProductVersion>10.0.20506</ProductVersion>
|
||||||
|
<SchemaVersion>2.0</SchemaVersion>
|
||||||
|
<ProjectGuid>{8135F574-8998-46CF-A236-DB2AB4E9F858}</ProjectGuid>
|
||||||
|
<ProjectTypeGuids>{C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
|
||||||
|
<OutputType>Library</OutputType>
|
||||||
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
|
<RootNamespace>STPWPDemo</RootNamespace>
|
||||||
|
<AssemblyName>STPWPDemo</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||||
|
<SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
|
||||||
|
<TargetFrameworkProfile>WindowsPhone71</TargetFrameworkProfile>
|
||||||
|
<TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
|
||||||
|
<SilverlightApplication>true</SilverlightApplication>
|
||||||
|
<SupportedCultures>
|
||||||
|
</SupportedCultures>
|
||||||
|
<XapOutputs>true</XapOutputs>
|
||||||
|
<GenerateSilverlightManifest>true</GenerateSilverlightManifest>
|
||||||
|
<XapFilename>STPWPDemo.xap</XapFilename>
|
||||||
|
<SilverlightManifestTemplate>Properties\AppManifest.xml</SilverlightManifestTemplate>
|
||||||
|
<SilverlightAppEntry>STPWPDemo.App</SilverlightAppEntry>
|
||||||
|
<ValidateXaml>true</ValidateXaml>
|
||||||
|
<ThrowErrorsInValidation>true</ThrowErrorsInValidation>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<OutputPath>Bin\Debug</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
|
||||||
|
<NoStdLib>true</NoStdLib>
|
||||||
|
<NoConfig>true</NoConfig>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>Bin\Release</OutputPath>
|
||||||
|
<DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
|
||||||
|
<NoStdLib>true</NoStdLib>
|
||||||
|
<NoConfig>true</NoConfig>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="Microsoft.Phone" />
|
||||||
|
<Reference Include="Microsoft.Phone.Interop" />
|
||||||
|
<Reference Include="System.Windows" />
|
||||||
|
<Reference Include="system" />
|
||||||
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Net" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
<Reference Include="mscorlib.extensions" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="App.xaml.cs">
|
||||||
|
<DependentUpon>App.xaml</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="MainPage.xaml.cs">
|
||||||
|
<DependentUpon>MainPage.xaml</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
<Compile Include="SpinTextBlock.xaml.cs">
|
||||||
|
<DependentUpon>SpinTextBlock.xaml</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="UsageControl.xaml.cs">
|
||||||
|
<DependentUpon>UsageControl.xaml</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="UsageHistoryControl.xaml.cs">
|
||||||
|
<DependentUpon>UsageHistoryControl.xaml</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ApplicationDefinition Include="App.xaml">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
</ApplicationDefinition>
|
||||||
|
<Page Include="MainPage.xaml">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
</Page>
|
||||||
|
<Page Include="SpinTextBlock.xaml">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
</Page>
|
||||||
|
<Page Include="UsageControl.xaml">
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</Page>
|
||||||
|
<Page Include="UsageHistoryControl.xaml">
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</Page>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="Properties\AppManifest.xml" />
|
||||||
|
<None Include="Properties\WMAppManifest.xml" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Content Include="ApplicationIcon.png">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
|
<Content Include="Background.png">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
|
<Resource Include="Resources\EmptyCell.jpg" />
|
||||||
|
<Resource Include="Resources\GreenCell.jpg" />
|
||||||
|
<Resource Include="Resources\RedCell.jpg" />
|
||||||
|
<Content Include="SplashScreenImage.jpg" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\SmartThreadPool\SmartThreadPoolWP.csproj">
|
||||||
|
<Project>{7FDC5E97-864A-4D4D-8B83-7F2F27AFABCC}</Project>
|
||||||
|
<Name>SmartThreadPoolWP</Name>
|
||||||
|
</ProjectReference>
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildExtensionsPath)\Microsoft\Silverlight for Phone\$(TargetFrameworkVersion)\Microsoft.Silverlight.$(TargetFrameworkProfile).Overrides.targets" />
|
||||||
|
<Import Project="$(MSBuildExtensionsPath)\Microsoft\Silverlight for Phone\$(TargetFrameworkVersion)\Microsoft.Silverlight.CSharp.targets" />
|
||||||
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
|
<Target Name="BeforeBuild">
|
||||||
|
</Target>
|
||||||
|
<Target Name="AfterBuild">
|
||||||
|
</Target>
|
||||||
|
-->
|
||||||
|
<ProjectExtensions />
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
<UserControl x:Class="STPWPDemo.SpinTextBlock"
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
|
mc:Ignorable="d"
|
||||||
|
FontFamily="{StaticResource PhoneFontFamilyNormal}"
|
||||||
|
FontSize="{StaticResource PhoneFontSizeNormal}"
|
||||||
|
Foreground="{StaticResource PhoneForegroundBrush}"
|
||||||
|
d:DesignHeight="63" d:DesignWidth="354">
|
||||||
|
|
||||||
|
<Grid x:Name="LayoutRoot">
|
||||||
|
<TextBlock Name="TextBlock" Margin="40,0,40,0"/>
|
||||||
|
<TextBlock Name="Dec" Text="--" TextAlignment="Center" VerticalAlignment="Top" HorizontalAlignment="Left" Width="40" MouseLeftButtonUp="Dec_MouseLeftButtonUp" Height="63" />
|
||||||
|
<TextBlock Name="Inc" Text="++" TextAlignment="Center" VerticalAlignment="Top" HorizontalAlignment="Right" Width="40" MouseLeftButtonUp="Inc_MouseLeftButtonUp" Height="63" />
|
||||||
|
</Grid>
|
||||||
|
</UserControl>
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
using System.Windows.Input;
|
||||||
|
using System.Windows.Media;
|
||||||
|
using System.Windows.Threading;
|
||||||
|
|
||||||
|
namespace STPWPDemo
|
||||||
|
{
|
||||||
|
public partial class SpinTextBlock : UserControl
|
||||||
|
{
|
||||||
|
public event EventHandler<EventArgs> Increment;
|
||||||
|
public event EventHandler<EventArgs> Decrement;
|
||||||
|
|
||||||
|
public SpinTextBlock()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Dec_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
|
||||||
|
{
|
||||||
|
if (Decrement != null)
|
||||||
|
{
|
||||||
|
Decrement(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Inc_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
|
||||||
|
{
|
||||||
|
if (Increment != null)
|
||||||
|
{
|
||||||
|
Increment(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Text
|
||||||
|
{
|
||||||
|
get { return TextBlock.Text; }
|
||||||
|
set { TextBlock.Text = value; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 9.2 KiB |
@@ -0,0 +1,28 @@
|
|||||||
|
<UserControl x:Class="STPWPDemo.UsageControl"
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Height="Auto" Width="Auto">
|
||||||
|
<Grid x:Name="LayoutRoot" Loaded="LayoutRoot_Loaded" Background="Black" Height="100">
|
||||||
|
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="18"/>
|
||||||
|
<ColumnDefinition Width="18"/>
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="4"/>
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
|
||||||
|
<Border Grid.Row="0" Grid.Column="0" Width="Auto" Height="Auto">
|
||||||
|
<Border.Background>
|
||||||
|
<ImageBrush ImageSource="Resources/RedCell.jpg"/>
|
||||||
|
</Border.Background>
|
||||||
|
</Border>
|
||||||
|
|
||||||
|
|
||||||
|
<Grid.Resources>
|
||||||
|
<ImageBrush x:Name="EmptyCell" ImageSource="Resources/EmptyCell.jpg"/>
|
||||||
|
<ImageBrush x:Name="GreenCell" ImageSource="Resources/GreenCell.jpg"/>
|
||||||
|
<ImageBrush x:Name="RedCell" ImageSource="Resources/RedCell.jpg"/>
|
||||||
|
</Grid.Resources>
|
||||||
|
</Grid>
|
||||||
|
</UserControl>
|
||||||
@@ -0,0 +1,109 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
using System.Windows.Documents;
|
||||||
|
using System.Windows.Ink;
|
||||||
|
using System.Windows.Input;
|
||||||
|
using System.Windows.Media;
|
||||||
|
using System.Windows.Media.Animation;
|
||||||
|
using System.Windows.Media.Imaging;
|
||||||
|
using System.Windows.Shapes;
|
||||||
|
|
||||||
|
namespace STPWPDemo
|
||||||
|
{
|
||||||
|
public partial class UsageControl : UserControl
|
||||||
|
{
|
||||||
|
private int _rows = 30;
|
||||||
|
private int _columns = 2;
|
||||||
|
|
||||||
|
private int _max = 100; // Maximum value for progress range
|
||||||
|
private int _value1 = 30; // Current progress
|
||||||
|
private int _value2 = 60; // Current progress
|
||||||
|
|
||||||
|
|
||||||
|
public int Value1
|
||||||
|
{
|
||||||
|
get { return _value1; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_value1 = value;
|
||||||
|
UpdateDisplay();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Value2
|
||||||
|
{
|
||||||
|
get { return _value2; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_value2 = value;
|
||||||
|
UpdateDisplay();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Maximum
|
||||||
|
{
|
||||||
|
get { return _max; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_max = value;
|
||||||
|
UpdateDisplay();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public UsageControl()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void LayoutRoot_Loaded(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
LayoutRoot.Height = _rows * 4;
|
||||||
|
LayoutRoot.Width = _columns * 18;
|
||||||
|
|
||||||
|
LayoutRoot.RowDefinitions.Clear();
|
||||||
|
|
||||||
|
for (int i = 0; i < _rows; i++)
|
||||||
|
{
|
||||||
|
LayoutRoot.RowDefinitions.Add(new RowDefinition());
|
||||||
|
}
|
||||||
|
|
||||||
|
UpdateDisplay();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void UpdateDisplay()
|
||||||
|
{
|
||||||
|
LayoutRoot.Children.Clear();
|
||||||
|
|
||||||
|
for (int j = 0; j < _columns; j++)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < _rows; i++)
|
||||||
|
{
|
||||||
|
Brush brush = EmptyCell;
|
||||||
|
|
||||||
|
int percent = i * _max / _rows;
|
||||||
|
|
||||||
|
if (percent < _value2)
|
||||||
|
{
|
||||||
|
brush = RedCell;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (percent < _value1)
|
||||||
|
{
|
||||||
|
brush = GreenCell;
|
||||||
|
}
|
||||||
|
|
||||||
|
Border border = new Border { Background = brush };
|
||||||
|
|
||||||
|
Grid.SetRow(border, _rows - i - 1);
|
||||||
|
Grid.SetColumn(border, j);
|
||||||
|
LayoutRoot.Children.Add(border);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
<UserControl x:Class="STPWPDemo.UsageHistoryControl"
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
Width="400" Height="300">
|
||||||
|
<Grid x:Name="LayoutRoot" Background="Black" Loaded="LayoutRoot_Loaded">
|
||||||
|
<InkPresenter x:Name="_surface" Background="Black"/>
|
||||||
|
</Grid>
|
||||||
|
</UserControl>
|
||||||
@@ -0,0 +1,209 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
using System.Windows.Documents;
|
||||||
|
using System.Windows.Ink;
|
||||||
|
using System.Windows.Input;
|
||||||
|
using System.Windows.Media;
|
||||||
|
using System.Windows.Media.Animation;
|
||||||
|
using System.Windows.Shapes;
|
||||||
|
|
||||||
|
namespace STPWPDemo
|
||||||
|
{
|
||||||
|
public partial class UsageHistoryControl : UserControl
|
||||||
|
{
|
||||||
|
private const int _squareWidth = 12;
|
||||||
|
private const int maxLastValuesCount = 2000;
|
||||||
|
private const int _shiftStep = 3;
|
||||||
|
|
||||||
|
private int _shift = 0;
|
||||||
|
|
||||||
|
private int[] lastValues1 = new int[maxLastValuesCount];
|
||||||
|
private int[] lastValues2 = new int[maxLastValuesCount];
|
||||||
|
private int nextValueIndex;
|
||||||
|
private int lastValuesCount;
|
||||||
|
|
||||||
|
private int max = 100;
|
||||||
|
private int min = 0;
|
||||||
|
|
||||||
|
public UsageHistoryControl()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Reset()
|
||||||
|
{
|
||||||
|
lastValues1.Initialize();
|
||||||
|
lastValues2.Initialize();
|
||||||
|
nextValueIndex = 0;
|
||||||
|
lastValuesCount = 0;
|
||||||
|
Redraw();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void LayoutRoot_Loaded(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
Redraw();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Redraw()
|
||||||
|
{
|
||||||
|
_surface.Strokes.Clear();
|
||||||
|
|
||||||
|
for (int i = 0; i <= Width + _squareWidth; i += _squareWidth)
|
||||||
|
{
|
||||||
|
int x = i - _shift;
|
||||||
|
if (x>= 0 && x < Width)
|
||||||
|
{
|
||||||
|
DrawLine(Colors.Green, x, 0, x, (int) Height);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < Height; i += _squareWidth)
|
||||||
|
{
|
||||||
|
DrawLine(Colors.Green, 0, i, (int)Width, i);
|
||||||
|
}
|
||||||
|
int startValueIndex = (nextValueIndex - 1 + maxLastValuesCount) % maxLastValuesCount;
|
||||||
|
|
||||||
|
int prevVal1 = GetRelativeValue(lastValues1[startValueIndex]);
|
||||||
|
int prevVal2 = GetRelativeValue(lastValues2[startValueIndex]);
|
||||||
|
|
||||||
|
for (int i = 1; i < lastValuesCount; ++i)
|
||||||
|
{
|
||||||
|
int index = nextValueIndex - 1 - i;
|
||||||
|
if (index < 0)
|
||||||
|
{
|
||||||
|
index += maxLastValuesCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
int val1 = GetRelativeValue(lastValues1[index]);
|
||||||
|
int val2 = GetRelativeValue(lastValues2[index]);
|
||||||
|
|
||||||
|
//Brush redBrush =
|
||||||
|
// new LinearGradientBrush(
|
||||||
|
// new Point(0, -(int)Height / 2),
|
||||||
|
// new Point(0, (int)Height),
|
||||||
|
// Color.Black,
|
||||||
|
// Color.Red);
|
||||||
|
|
||||||
|
DrawLine(
|
||||||
|
Colors.Red,
|
||||||
|
(int)Width - (i - 1) * _shiftStep, (int)Height - prevVal2,
|
||||||
|
(int)Width - i * _shiftStep, (int)Height - val2);
|
||||||
|
|
||||||
|
//g.FillPolygon(
|
||||||
|
// redBrush,
|
||||||
|
// new Point[]
|
||||||
|
// {
|
||||||
|
// new Point((int)Width-(i-1)*_shiftStep, (int)Height-prevVal2),
|
||||||
|
// new Point((int)Width-i*_shiftStep, (int)Height-val2),
|
||||||
|
// new Point((int)Width-i*_shiftStep, (int)Height),
|
||||||
|
// new Point((int)Width-(i-1)*_shiftStep, (int)Height),
|
||||||
|
// });
|
||||||
|
|
||||||
|
//Brush greenBrush =
|
||||||
|
// new LinearGradientBrush(
|
||||||
|
// new Point(0, -(int)Height / 2),
|
||||||
|
// new Point(0, (int)Height),
|
||||||
|
// Color.Black,
|
||||||
|
// Color.LawnGreen);
|
||||||
|
|
||||||
|
DrawLine(
|
||||||
|
Color.FromArgb(255, 124, 252, 0), // Colors.LawnGreen
|
||||||
|
(int)Width - (i - 1) * _shiftStep, (int)Height - prevVal1,
|
||||||
|
(int)Width - i * _shiftStep, (int)Height - val1);
|
||||||
|
|
||||||
|
//g.FillPolygon(
|
||||||
|
// greenBrush,
|
||||||
|
// new Point[]
|
||||||
|
// {
|
||||||
|
// new Point((int)Width-(i-1)*_shiftStep, (int)Height-prevVal1),
|
||||||
|
// new Point((int)Width-i*_shiftStep, (int)Height-val1),
|
||||||
|
// new Point((int)Width-i*_shiftStep, (int)Height),
|
||||||
|
// new Point((int)Width-(i-1)*_shiftStep, (int)Height),
|
||||||
|
// });
|
||||||
|
|
||||||
|
prevVal1 = val1;
|
||||||
|
prevVal2 = val2;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private int GetRelativeValue(int val)
|
||||||
|
{
|
||||||
|
int result = val * ((int)Height - 2) / max + 1;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddValues(int val1, int val2)
|
||||||
|
{
|
||||||
|
lastValues1[nextValueIndex] = val1;
|
||||||
|
lastValues2[nextValueIndex] = val2;
|
||||||
|
|
||||||
|
nextValueIndex++;
|
||||||
|
nextValueIndex %= maxLastValuesCount;
|
||||||
|
lastValuesCount++;
|
||||||
|
if (lastValuesCount > maxLastValuesCount)
|
||||||
|
{
|
||||||
|
lastValuesCount = maxLastValuesCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
_shift += _shiftStep;
|
||||||
|
_shift %= _squareWidth;
|
||||||
|
Redraw();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Maximum
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return max;
|
||||||
|
}
|
||||||
|
|
||||||
|
set
|
||||||
|
{
|
||||||
|
// Make sure that the maximum value is never set lower than the minimum value.
|
||||||
|
if (value < min)
|
||||||
|
{
|
||||||
|
min = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
max = value;
|
||||||
|
|
||||||
|
// Invalidate the control to get a repaint.
|
||||||
|
Redraw();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DrawLine(Color color, int x1, int y1, int x2, int y2)
|
||||||
|
{
|
||||||
|
if (x1 < 0 || x2 < 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
DrawPolygon(color, new Point(x1, y1), new Point(x2, y2));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DrawPolygon(
|
||||||
|
Color color,
|
||||||
|
params Point[] points)
|
||||||
|
{
|
||||||
|
StylusPointCollection stylusPointCollection = new StylusPointCollection();
|
||||||
|
foreach (Point point in points)
|
||||||
|
{
|
||||||
|
stylusPointCollection.Add(new StylusPoint(point.X, point.Y));
|
||||||
|
}
|
||||||
|
|
||||||
|
Stroke stroke = new Stroke(stylusPointCollection);
|
||||||
|
|
||||||
|
stroke.DrawingAttributes.Color = color;
|
||||||
|
stroke.DrawingAttributes.Width = 1;
|
||||||
|
stroke.DrawingAttributes.Height = 1;
|
||||||
|
|
||||||
|
_surface.Strokes.Add(stroke);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
+35
-33
@@ -1,7 +1,15 @@
|
|||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 10.00
|
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||||
# Visual Studio 2008
|
# Visual Studio 2010
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SmartThreadPoolCE", "SmartThreadPool\SmartThreadPoolCE.csproj", "{D81DD596-C71F-4AC2-816C-63C19589E7E0}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Silverlight", "Silverlight", "{EAF99021-123A-4E2F-9039-85003559100B}"
|
||||||
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Mono", "Mono", "{9C6E9536-59A0-4F06-8085-0BB30ECB5158}"
|
||||||
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Examples", "Examples", "{B0D5FBC5-E0A7-43C1-83E0-AC6B9224ADB6}"
|
||||||
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{C89D3C93-9BBC-47B9-943F-6962AACBE534}"
|
||||||
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WinPhone", "WinPhone", "{E3FF1F4F-8871-4373-8C3C-9A13E2ADA06A}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SmartThreadPool", "SmartThreadPool\SmartThreadPool.csproj", "{74D4C33F-7CC8-4B2A-A7DF-D8B6E63B6EBD}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SmartThreadPool", "SmartThreadPool\SmartThreadPool.csproj", "{74D4C33F-7CC8-4B2A-A7DF-D8B6E63B6EBD}"
|
||||||
EndProject
|
EndProject
|
||||||
@@ -15,38 +23,26 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UsageControl", "UsageContro
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WorkItemsGroupDemo", "WorkItemsGroupDemo\WorkItemsGroupDemo.csproj", "{DC005A64-FAE9-4CFA-ADC8-F1D1FE7FE6CD}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WorkItemsGroupDemo", "WorkItemsGroupDemo\WorkItemsGroupDemo.csproj", "{DC005A64-FAE9-4CFA-ADC8-F1D1FE7FE6CD}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "STPCEDemo", "STPCEDemo\STPCEDemo.csproj", "{356114BA-5F10-4DB6-9971-987CE11F765F}"
|
Project("{00000000-0000-0000-0000-000000000000}") = "SmartThreadPoolSL", "SmartThreadPool\SmartThreadPoolSL.csproj", "{A6590A96-22B3-4889-B80E-2C398810E441}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SmartThreadPoolSL", "SmartThreadPool\SmartThreadPoolSL.csproj", "{A6590A96-22B3-4889-B80E-2C398810E441}"
|
Project("{00000000-0000-0000-0000-000000000000}") = "STPSLDemo", "STPSLDemo\STPSLDemo.csproj", "{44EE4F12-169F-4949-91F7-EFC7100C8BE5}"
|
||||||
EndProject
|
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "STPSLDemo", "STPSLDemo\STPSLDemo.csproj", "{44EE4F12-169F-4949-91F7-EFC7100C8BE5}"
|
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SmartThreadPoolMono", "SmartThreadPool\SmartThreadPoolMono.csproj", "{3462F30B-0156-409C-B256-6046D6F1764B}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SmartThreadPoolMono", "SmartThreadPool\SmartThreadPoolMono.csproj", "{3462F30B-0156-409C-B256-6046D6F1764B}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CE", "CE", "{655817E0-5892-4E47-9598-A5AB25B9B64D}"
|
|
||||||
EndProject
|
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Silverlight", "Silverlight", "{EAF99021-123A-4E2F-9039-85003559100B}"
|
|
||||||
EndProject
|
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Mono", "Mono", "{9C6E9536-59A0-4F06-8085-0BB30ECB5158}"
|
|
||||||
EndProject
|
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestSmartThreadPoolMono", "TestSmartThreadPool\TestSmartThreadPoolMono.csproj", "{E8C4E483-0336-4D89-95F8-8924789ACA51}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestSmartThreadPoolMono", "TestSmartThreadPool\TestSmartThreadPoolMono.csproj", "{E8C4E483-0336-4D89-95F8-8924789ACA51}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Examples", "Examples", "{B0D5FBC5-E0A7-43C1-83E0-AC6B9224ADB6}"
|
|
||||||
EndProject
|
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{C89D3C93-9BBC-47B9-943F-6962AACBE534}"
|
|
||||||
EndProject
|
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WorkItemsGroupDemoMono", "WorkItemsGroupDemo\WorkItemsGroupDemoMono.csproj", "{4B1DED71-6B32-4D9A-A811-120E5F1187D9}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WorkItemsGroupDemoMono", "WorkItemsGroupDemo\WorkItemsGroupDemoMono.csproj", "{4B1DED71-6B32-4D9A-A811-120E5F1187D9}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SmartThreadPoolWP", "SmartThreadPool\SmartThreadPoolWP.csproj", "{7FDC5E97-864A-4D4D-8B83-7F2F27AFABCC}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "STPWPDemo", "STPWPDemo\STPWPDemo.csproj", "{8135F574-8998-46CF-A236-DB2AB4E9F858}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
Release|Any CPU = Release|Any CPU
|
Release|Any CPU = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
{D81DD596-C71F-4AC2-816C-63C19589E7E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{D81DD596-C71F-4AC2-816C-63C19589E7E0}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{D81DD596-C71F-4AC2-816C-63C19589E7E0}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{D81DD596-C71F-4AC2-816C-63C19589E7E0}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{74D4C33F-7CC8-4B2A-A7DF-D8B6E63B6EBD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{74D4C33F-7CC8-4B2A-A7DF-D8B6E63B6EBD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{74D4C33F-7CC8-4B2A-A7DF-D8B6E63B6EBD}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{74D4C33F-7CC8-4B2A-A7DF-D8B6E63B6EBD}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{74D4C33F-7CC8-4B2A-A7DF-D8B6E63B6EBD}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{74D4C33F-7CC8-4B2A-A7DF-D8B6E63B6EBD}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
@@ -71,10 +67,6 @@ Global
|
|||||||
{DC005A64-FAE9-4CFA-ADC8-F1D1FE7FE6CD}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{DC005A64-FAE9-4CFA-ADC8-F1D1FE7FE6CD}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{DC005A64-FAE9-4CFA-ADC8-F1D1FE7FE6CD}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{DC005A64-FAE9-4CFA-ADC8-F1D1FE7FE6CD}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{DC005A64-FAE9-4CFA-ADC8-F1D1FE7FE6CD}.Release|Any CPU.Build.0 = Release|Any CPU
|
{DC005A64-FAE9-4CFA-ADC8-F1D1FE7FE6CD}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{356114BA-5F10-4DB6-9971-987CE11F765F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{356114BA-5F10-4DB6-9971-987CE11F765F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{356114BA-5F10-4DB6-9971-987CE11F765F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{356114BA-5F10-4DB6-9971-987CE11F765F}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{A6590A96-22B3-4889-B80E-2C398810E441}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{A6590A96-22B3-4889-B80E-2C398810E441}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{A6590A96-22B3-4889-B80E-2C398810E441}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{A6590A96-22B3-4889-B80E-2C398810E441}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{A6590A96-22B3-4889-B80E-2C398810E441}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{A6590A96-22B3-4889-B80E-2C398810E441}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
@@ -95,22 +87,32 @@ Global
|
|||||||
{4B1DED71-6B32-4D9A-A811-120E5F1187D9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{4B1DED71-6B32-4D9A-A811-120E5F1187D9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{4B1DED71-6B32-4D9A-A811-120E5F1187D9}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{4B1DED71-6B32-4D9A-A811-120E5F1187D9}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{4B1DED71-6B32-4D9A-A811-120E5F1187D9}.Release|Any CPU.Build.0 = Release|Any CPU
|
{4B1DED71-6B32-4D9A-A811-120E5F1187D9}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{7FDC5E97-864A-4D4D-8B83-7F2F27AFABCC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{7FDC5E97-864A-4D4D-8B83-7F2F27AFABCC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{7FDC5E97-864A-4D4D-8B83-7F2F27AFABCC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{7FDC5E97-864A-4D4D-8B83-7F2F27AFABCC}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{8135F574-8998-46CF-A236-DB2AB4E9F858}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{8135F574-8998-46CF-A236-DB2AB4E9F858}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{8135F574-8998-46CF-A236-DB2AB4E9F858}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
|
||||||
|
{8135F574-8998-46CF-A236-DB2AB4E9F858}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{8135F574-8998-46CF-A236-DB2AB4E9F858}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{8135F574-8998-46CF-A236-DB2AB4E9F858}.Release|Any CPU.Deploy.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(NestedProjects) = preSolution
|
GlobalSection(NestedProjects) = preSolution
|
||||||
{356114BA-5F10-4DB6-9971-987CE11F765F} = {655817E0-5892-4E47-9598-A5AB25B9B64D}
|
|
||||||
{D81DD596-C71F-4AC2-816C-63C19589E7E0} = {655817E0-5892-4E47-9598-A5AB25B9B64D}
|
|
||||||
{976DB12F-9198-4AD9-981A-1652615C9B0D} = {B0D5FBC5-E0A7-43C1-83E0-AC6B9224ADB6}
|
|
||||||
{C11A4561-CCB5-4C96-8DF2-B804031D89D8} = {B0D5FBC5-E0A7-43C1-83E0-AC6B9224ADB6}
|
|
||||||
{DC005A64-FAE9-4CFA-ADC8-F1D1FE7FE6CD} = {B0D5FBC5-E0A7-43C1-83E0-AC6B9224ADB6}
|
|
||||||
{AE943A5A-7CFD-4E0D-BA51-FB763AAEA9A3} = {B0D5FBC5-E0A7-43C1-83E0-AC6B9224ADB6}
|
|
||||||
{6A3E4DBF-12AD-4636-ACB3-24B5172FAE03} = {C89D3C93-9BBC-47B9-943F-6962AACBE534}
|
|
||||||
{44EE4F12-169F-4949-91F7-EFC7100C8BE5} = {EAF99021-123A-4E2F-9039-85003559100B}
|
|
||||||
{A6590A96-22B3-4889-B80E-2C398810E441} = {EAF99021-123A-4E2F-9039-85003559100B}
|
{A6590A96-22B3-4889-B80E-2C398810E441} = {EAF99021-123A-4E2F-9039-85003559100B}
|
||||||
|
{44EE4F12-169F-4949-91F7-EFC7100C8BE5} = {EAF99021-123A-4E2F-9039-85003559100B}
|
||||||
{3462F30B-0156-409C-B256-6046D6F1764B} = {9C6E9536-59A0-4F06-8085-0BB30ECB5158}
|
{3462F30B-0156-409C-B256-6046D6F1764B} = {9C6E9536-59A0-4F06-8085-0BB30ECB5158}
|
||||||
{E8C4E483-0336-4D89-95F8-8924789ACA51} = {9C6E9536-59A0-4F06-8085-0BB30ECB5158}
|
{E8C4E483-0336-4D89-95F8-8924789ACA51} = {9C6E9536-59A0-4F06-8085-0BB30ECB5158}
|
||||||
{4B1DED71-6B32-4D9A-A811-120E5F1187D9} = {9C6E9536-59A0-4F06-8085-0BB30ECB5158}
|
{4B1DED71-6B32-4D9A-A811-120E5F1187D9} = {9C6E9536-59A0-4F06-8085-0BB30ECB5158}
|
||||||
|
{AE943A5A-7CFD-4E0D-BA51-FB763AAEA9A3} = {B0D5FBC5-E0A7-43C1-83E0-AC6B9224ADB6}
|
||||||
|
{976DB12F-9198-4AD9-981A-1652615C9B0D} = {B0D5FBC5-E0A7-43C1-83E0-AC6B9224ADB6}
|
||||||
|
{C11A4561-CCB5-4C96-8DF2-B804031D89D8} = {B0D5FBC5-E0A7-43C1-83E0-AC6B9224ADB6}
|
||||||
|
{DC005A64-FAE9-4CFA-ADC8-F1D1FE7FE6CD} = {B0D5FBC5-E0A7-43C1-83E0-AC6B9224ADB6}
|
||||||
|
{6A3E4DBF-12AD-4636-ACB3-24B5172FAE03} = {C89D3C93-9BBC-47B9-943F-6962AACBE534}
|
||||||
|
{7FDC5E97-864A-4D4D-8B83-7F2F27AFABCC} = {E3FF1F4F-8871-4373-8C3C-9A13E2ADA06A}
|
||||||
|
{8135F574-8998-46CF-A236-DB2AB4E9F858} = {E3FF1F4F-8871-4373-8C3C-9A13E2ADA06A}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
EndGlobal
|
EndGlobal
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
#if !(_WINDOWS_CE) && !(_SILVERLIGHT)
|
#if !(_WINDOWS_CE) && !(_SILVERLIGHT) && !(WINDOWS_PHONE)
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ namespace Amib.Threading
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#if !(_WINDOWS_CE) && !(_SILVERLIGHT)
|
#if !(_WINDOWS_CE) && !(_SILVERLIGHT) && !(WINDOWS_PHONE)
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Represents an exception in case IWorkItemResult.GetResult has been canceled
|
/// Represents an exception in case IWorkItemResult.GetResult has been canceled
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ using System.Threading;
|
|||||||
|
|
||||||
namespace Amib.Threading.Internal
|
namespace Amib.Threading.Internal
|
||||||
{
|
{
|
||||||
#if _WINDOWS
|
#if _WINDOWS || WINDOWS_PHONE
|
||||||
internal static class STPEventWaitHandle
|
internal static class STPEventWaitHandle
|
||||||
{
|
{
|
||||||
public const int WaitTimeout = Timeout.Infinite;
|
public const int WaitTimeout = Timeout.Infinite;
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ namespace Amib.Threading.Internal
|
|||||||
void SampleWorkItemsWaitTime(TimeSpan workItemWaitTime);
|
void SampleWorkItemsWaitTime(TimeSpan workItemWaitTime);
|
||||||
void SampleWorkItemsProcessTime(TimeSpan workItemProcessTime);
|
void SampleWorkItemsProcessTime(TimeSpan workItemProcessTime);
|
||||||
}
|
}
|
||||||
#if !(_WINDOWS_CE) && !(_SILVERLIGHT)
|
#if !(_WINDOWS_CE) && !(_SILVERLIGHT) && !(WINDOWS_PHONE)
|
||||||
|
|
||||||
internal enum STPPerformanceCounterType
|
internal enum STPPerformanceCounterType
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -11,7 +11,9 @@ namespace Amib.Threading
|
|||||||
private int _idleTimeout = SmartThreadPool.DefaultIdleTimeout;
|
private int _idleTimeout = SmartThreadPool.DefaultIdleTimeout;
|
||||||
private int _minWorkerThreads = SmartThreadPool.DefaultMinWorkerThreads;
|
private int _minWorkerThreads = SmartThreadPool.DefaultMinWorkerThreads;
|
||||||
private int _maxWorkerThreads = SmartThreadPool.DefaultMaxWorkerThreads;
|
private int _maxWorkerThreads = SmartThreadPool.DefaultMaxWorkerThreads;
|
||||||
|
#if !(WINDOWS_PHONE)
|
||||||
private ThreadPriority _threadPriority = SmartThreadPool.DefaultThreadPriority;
|
private ThreadPriority _threadPriority = SmartThreadPool.DefaultThreadPriority;
|
||||||
|
#endif
|
||||||
private string _performanceCounterInstanceName = SmartThreadPool.DefaultPerformanceCounterInstanceName;
|
private string _performanceCounterInstanceName = SmartThreadPool.DefaultPerformanceCounterInstanceName;
|
||||||
private bool _areThreadsBackground = SmartThreadPool.DefaultAreThreadsBackground;
|
private bool _areThreadsBackground = SmartThreadPool.DefaultAreThreadsBackground;
|
||||||
private bool _enableLocalPerformanceCounters;
|
private bool _enableLocalPerformanceCounters;
|
||||||
@@ -20,7 +22,9 @@ namespace Amib.Threading
|
|||||||
public STPStartInfo()
|
public STPStartInfo()
|
||||||
{
|
{
|
||||||
_performanceCounterInstanceName = SmartThreadPool.DefaultPerformanceCounterInstanceName;
|
_performanceCounterInstanceName = SmartThreadPool.DefaultPerformanceCounterInstanceName;
|
||||||
|
#if !(WINDOWS_PHONE)
|
||||||
_threadPriority = SmartThreadPool.DefaultThreadPriority;
|
_threadPriority = SmartThreadPool.DefaultThreadPriority;
|
||||||
|
#endif
|
||||||
_maxWorkerThreads = SmartThreadPool.DefaultMaxWorkerThreads;
|
_maxWorkerThreads = SmartThreadPool.DefaultMaxWorkerThreads;
|
||||||
_idleTimeout = SmartThreadPool.DefaultIdleTimeout;
|
_idleTimeout = SmartThreadPool.DefaultIdleTimeout;
|
||||||
_minWorkerThreads = SmartThreadPool.DefaultMinWorkerThreads;
|
_minWorkerThreads = SmartThreadPool.DefaultMinWorkerThreads;
|
||||||
@@ -32,12 +36,14 @@ namespace Amib.Threading
|
|||||||
_idleTimeout = stpStartInfo.IdleTimeout;
|
_idleTimeout = stpStartInfo.IdleTimeout;
|
||||||
_minWorkerThreads = stpStartInfo.MinWorkerThreads;
|
_minWorkerThreads = stpStartInfo.MinWorkerThreads;
|
||||||
_maxWorkerThreads = stpStartInfo.MaxWorkerThreads;
|
_maxWorkerThreads = stpStartInfo.MaxWorkerThreads;
|
||||||
|
#if !(WINDOWS_PHONE)
|
||||||
_threadPriority = stpStartInfo.ThreadPriority;
|
_threadPriority = stpStartInfo.ThreadPriority;
|
||||||
|
#endif
|
||||||
_performanceCounterInstanceName = stpStartInfo.PerformanceCounterInstanceName;
|
_performanceCounterInstanceName = stpStartInfo.PerformanceCounterInstanceName;
|
||||||
_enableLocalPerformanceCounters = stpStartInfo._enableLocalPerformanceCounters;
|
_enableLocalPerformanceCounters = stpStartInfo._enableLocalPerformanceCounters;
|
||||||
_threadPoolName = stpStartInfo._threadPoolName;
|
_threadPoolName = stpStartInfo._threadPoolName;
|
||||||
_areThreadsBackground = stpStartInfo.AreThreadsBackground;
|
_areThreadsBackground = stpStartInfo.AreThreadsBackground;
|
||||||
#if !(_SILVERLIGHT)
|
#if !(_SILVERLIGHT) && !(WINDOWS_PHONE)
|
||||||
_apartmentState = stpStartInfo._apartmentState;
|
_apartmentState = stpStartInfo._apartmentState;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@@ -84,7 +90,7 @@ namespace Amib.Threading
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if !(WINDOWS_PHONE)
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get/Set the scheduling priority of the threads in the pool.
|
/// Get/Set the scheduling priority of the threads in the pool.
|
||||||
/// The Os handles the scheduling.
|
/// The Os handles the scheduling.
|
||||||
@@ -98,7 +104,7 @@ namespace Amib.Threading
|
|||||||
_threadPriority = value;
|
_threadPriority = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get/Set the thread pool name. Threads will get names depending on this.
|
/// Get/Set the thread pool name. Threads will get names depending on this.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -163,7 +169,7 @@ namespace Amib.Threading
|
|||||||
return new STPStartInfo(this) { _readOnly = true };
|
return new STPStartInfo(this) { _readOnly = true };
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !(_SILVERLIGHT)
|
#if !(_SILVERLIGHT) && !(WINDOWS_PHONE)
|
||||||
|
|
||||||
private ApartmentState _apartmentState = SmartThreadPool.DefaultApartmentState;
|
private ApartmentState _apartmentState = SmartThreadPool.DefaultApartmentState;
|
||||||
|
|
||||||
|
|||||||
@@ -154,11 +154,13 @@ namespace Amib.Threading
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public static readonly string DefaultPerformanceCounterInstanceName;
|
public static readonly string DefaultPerformanceCounterInstanceName;
|
||||||
|
|
||||||
|
#if !(WINDOWS_PHONE)
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The default thread priority (ThreadPriority.Normal)
|
/// The default thread priority (ThreadPriority.Normal)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const ThreadPriority DefaultThreadPriority = ThreadPriority.Normal;
|
public const ThreadPriority DefaultThreadPriority = ThreadPriority.Normal;
|
||||||
|
#endif
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The default thread pool name. (SmartThreadPool)
|
/// The default thread pool name. (SmartThreadPool)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -175,7 +177,7 @@ namespace Amib.Threading
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public const bool DefaultAreThreadsBackground = true;
|
public const bool DefaultAreThreadsBackground = true;
|
||||||
|
|
||||||
#if !(_SILVERLIGHT)
|
#if !(_SILVERLIGHT) && !(WINDOWS_PHONE)
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The default apartment state of a thread in the thread pool.
|
/// The default apartment state of a thread in the thread pool.
|
||||||
/// The default is ApartmentState.Unknown which means the STP will not
|
/// The default is ApartmentState.Unknown which means the STP will not
|
||||||
@@ -284,7 +286,9 @@ namespace Amib.Threading
|
|||||||
private ISTPInstancePerformanceCounters _localPCs = NullSTPInstancePerformanceCounters.Instance;
|
private ISTPInstancePerformanceCounters _localPCs = NullSTPInstancePerformanceCounters.Instance;
|
||||||
|
|
||||||
|
|
||||||
#if (_WINDOWS_CE)
|
#if (WINDOWS_PHONE)
|
||||||
|
private static readonly Dictionary<int, ThreadEntry> _threadEntries = new Dictionary<int, ThreadEntry>();
|
||||||
|
#elif (_WINDOWS_CE)
|
||||||
private static LocalDataStoreSlot _threadEntrySlot = Thread.AllocateDataSlot();
|
private static LocalDataStoreSlot _threadEntrySlot = Thread.AllocateDataSlot();
|
||||||
#else
|
#else
|
||||||
[ThreadStatic]
|
[ThreadStatic]
|
||||||
@@ -314,9 +318,30 @@ namespace Amib.Threading
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
internal static ThreadEntry CurrentThreadEntry
|
internal static ThreadEntry CurrentThreadEntry
|
||||||
{
|
{
|
||||||
#if (_WINDOWS_CE)
|
#if (WINDOWS_PHONE)
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
|
lock(_threadEntries)
|
||||||
|
{
|
||||||
|
ThreadEntry threadEntry;
|
||||||
|
if (_threadEntries.TryGetValue(Thread.CurrentThread.ManagedThreadId, out threadEntry))
|
||||||
|
{
|
||||||
|
return threadEntry;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
lock(_threadEntries)
|
||||||
|
{
|
||||||
|
_threadEntries[Thread.CurrentThread.ManagedThreadId] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#elif (_WINDOWS_CE)
|
||||||
|
get
|
||||||
|
{
|
||||||
|
//Thread.CurrentThread.ManagedThreadId
|
||||||
return Thread.GetData(_threadEntrySlot) as ThreadEntry;
|
return Thread.GetData(_threadEntrySlot) as ThreadEntry;
|
||||||
}
|
}
|
||||||
set
|
set
|
||||||
@@ -417,7 +442,7 @@ namespace Amib.Threading
|
|||||||
|
|
||||||
_isSuspended = _stpStartInfo.StartSuspended;
|
_isSuspended = _stpStartInfo.StartSuspended;
|
||||||
|
|
||||||
#if (_WINDOWS_CE) || (_SILVERLIGHT) || (_MONO)
|
#if (_WINDOWS_CE) || (_SILVERLIGHT) || (_MONO) || (WINDOWS_PHONE)
|
||||||
if (null != _stpStartInfo.PerformanceCounterInstanceName)
|
if (null != _stpStartInfo.PerformanceCounterInstanceName)
|
||||||
{
|
{
|
||||||
throw new NotSupportedException("Performance counters are not implemented for Compact Framework/Silverlight/Mono, instead use StpStartInfo.EnableLocalPerformanceCounters");
|
throw new NotSupportedException("Performance counters are not implemented for Compact Framework/Silverlight/Mono, instead use StpStartInfo.EnableLocalPerformanceCounters");
|
||||||
@@ -629,14 +654,14 @@ namespace Amib.Threading
|
|||||||
workerThread.Name = "STP " + Name + " Thread #" + _threadCounter;
|
workerThread.Name = "STP " + Name + " Thread #" + _threadCounter;
|
||||||
workerThread.IsBackground = _stpStartInfo.AreThreadsBackground;
|
workerThread.IsBackground = _stpStartInfo.AreThreadsBackground;
|
||||||
|
|
||||||
#if !(_SILVERLIGHT) && !(_WINDOWS_CE)
|
#if !(_SILVERLIGHT) && !(_WINDOWS_CE) && !(WINDOWS_PHONE)
|
||||||
if (_stpStartInfo.ApartmentState != ApartmentState.Unknown)
|
if (_stpStartInfo.ApartmentState != ApartmentState.Unknown)
|
||||||
{
|
{
|
||||||
workerThread.SetApartmentState(_stpStartInfo.ApartmentState);
|
workerThread.SetApartmentState(_stpStartInfo.ApartmentState);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !(_SILVERLIGHT)
|
#if !(_SILVERLIGHT) && !(WINDOWS_PHONE)
|
||||||
workerThread.Priority = _stpStartInfo.ThreadPriority;
|
workerThread.Priority = _stpStartInfo.ThreadPriority;
|
||||||
#endif
|
#endif
|
||||||
workerThread.Start();
|
workerThread.Start();
|
||||||
@@ -806,7 +831,7 @@ namespace Amib.Threading
|
|||||||
{
|
{
|
||||||
tae.GetHashCode();
|
tae.GetHashCode();
|
||||||
// Handle the abort exception gracfully.
|
// Handle the abort exception gracfully.
|
||||||
#if !(_WINDOWS_CE) && !(_SILVERLIGHT)
|
#if !(_WINDOWS_CE) && !(_SILVERLIGHT) && !(WINDOWS_PHONE)
|
||||||
Thread.ResetAbort();
|
Thread.ResetAbort();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
@@ -9,9 +10,10 @@
|
|||||||
<RootNamespace>Amib.Threading</RootNamespace>
|
<RootNamespace>Amib.Threading</RootNamespace>
|
||||||
<FileUpgradeFlags>
|
<FileUpgradeFlags>
|
||||||
</FileUpgradeFlags>
|
</FileUpgradeFlags>
|
||||||
<OldToolsVersion>2.0</OldToolsVersion>
|
<OldToolsVersion>3.5</OldToolsVersion>
|
||||||
<UpgradeBackupLocation>
|
<UpgradeBackupLocation>
|
||||||
</UpgradeBackupLocation>
|
</UpgradeBackupLocation>
|
||||||
|
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
@@ -20,9 +21,8 @@
|
|||||||
<SignAssembly>false</SignAssembly>
|
<SignAssembly>false</SignAssembly>
|
||||||
<AssemblyOriginatorKeyFile>
|
<AssemblyOriginatorKeyFile>
|
||||||
</AssemblyOriginatorKeyFile>
|
</AssemblyOriginatorKeyFile>
|
||||||
<FileUpgradeFlags>
|
<FileUpgradeFlags>0</FileUpgradeFlags>
|
||||||
</FileUpgradeFlags>
|
<OldToolsVersion>4.0</OldToolsVersion>
|
||||||
<OldToolsVersion>2.0</OldToolsVersion>
|
|
||||||
<NativePlatformName>Windows CE</NativePlatformName>
|
<NativePlatformName>Windows CE</NativePlatformName>
|
||||||
<UpgradeBackupLocation>
|
<UpgradeBackupLocation>
|
||||||
</UpgradeBackupLocation>
|
</UpgradeBackupLocation>
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
@@ -11,7 +12,8 @@
|
|||||||
</FileUpgradeFlags>
|
</FileUpgradeFlags>
|
||||||
<UpgradeBackupLocation>
|
<UpgradeBackupLocation>
|
||||||
</UpgradeBackupLocation>
|
</UpgradeBackupLocation>
|
||||||
<OldToolsVersion>2.0</OldToolsVersion>
|
<OldToolsVersion>3.5</OldToolsVersion>
|
||||||
|
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
|||||||
@@ -1,4 +1,8 @@
|
|||||||
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup Condition="'$(MSBuildToolsVersion)' == '3.5'">
|
||||||
|
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||||
|
</PropertyGroup>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
@@ -10,7 +14,7 @@
|
|||||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
<RootNamespace>Amib.Threading</RootNamespace>
|
<RootNamespace>Amib.Threading</RootNamespace>
|
||||||
<AssemblyName>SmartThreadPoolSL</AssemblyName>
|
<AssemblyName>SmartThreadPoolSL</AssemblyName>
|
||||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v3.0</TargetFrameworkVersion>
|
||||||
<SilverlightApplication>false</SilverlightApplication>
|
<SilverlightApplication>false</SilverlightApplication>
|
||||||
<ValidateXaml>true</ValidateXaml>
|
<ValidateXaml>true</ValidateXaml>
|
||||||
<ThrowErrorsInValidation>false</ThrowErrorsInValidation>
|
<ThrowErrorsInValidation>false</ThrowErrorsInValidation>
|
||||||
@@ -19,6 +23,8 @@
|
|||||||
<OldToolsVersion>3.5</OldToolsVersion>
|
<OldToolsVersion>3.5</OldToolsVersion>
|
||||||
<UpgradeBackupLocation>
|
<UpgradeBackupLocation>
|
||||||
</UpgradeBackupLocation>
|
</UpgradeBackupLocation>
|
||||||
|
<TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
|
||||||
|
<SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
@@ -73,7 +79,7 @@
|
|||||||
<Compile Include="WorkItemsGroupBase.cs" />
|
<Compile Include="WorkItemsGroupBase.cs" />
|
||||||
<Compile Include="WorkItemsQueue.cs" />
|
<Compile Include="WorkItemsQueue.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Silverlight\v3.0\Microsoft.Silverlight.CSharp.targets" Condition="" />
|
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Silverlight\$(SilverlightVersion)\Microsoft.Silverlight.CSharp.targets" />
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
Other similar extension points exist, see Microsoft.Common.targets.
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
<Target Name="BeforeBuild">
|
<Target Name="BeforeBuild">
|
||||||
|
|||||||
@@ -0,0 +1,89 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
<ProductVersion>10.0.20506</ProductVersion>
|
||||||
|
<SchemaVersion>2.0</SchemaVersion>
|
||||||
|
<ProjectGuid>{7FDC5E97-864A-4D4D-8B83-7F2F27AFABCC}</ProjectGuid>
|
||||||
|
<ProjectTypeGuids>{C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
|
||||||
|
<OutputType>Library</OutputType>
|
||||||
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
|
<RootNamespace>SmartThreadPoolWP</RootNamespace>
|
||||||
|
<AssemblyName>SmartThreadPoolWP</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||||
|
<SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
|
||||||
|
<TargetFrameworkProfile>WindowsPhone71</TargetFrameworkProfile>
|
||||||
|
<TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
|
||||||
|
<SilverlightApplication>false</SilverlightApplication>
|
||||||
|
<ValidateXaml>true</ValidateXaml>
|
||||||
|
<ThrowErrorsInValidation>true</ThrowErrorsInValidation>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<OutputPath>Bin\Debug</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
|
||||||
|
<NoStdLib>true</NoStdLib>
|
||||||
|
<NoConfig>true</NoConfig>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>Bin\Release</OutputPath>
|
||||||
|
<DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
|
||||||
|
<NoStdLib>true</NoStdLib>
|
||||||
|
<NoConfig>true</NoConfig>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="System.Windows" />
|
||||||
|
<Reference Include="system" />
|
||||||
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
<Reference Include="System.Net" />
|
||||||
|
<Reference Include="mscorlib.extensions" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="CallerThreadContext.cs" />
|
||||||
|
<Compile Include="CanceledWorkItemsGroup.cs" />
|
||||||
|
<Compile Include="EventWaitHandle.cs" />
|
||||||
|
<Compile Include="EventWaitHandleFactory.cs" />
|
||||||
|
<Compile Include="Exceptions.cs" />
|
||||||
|
<Compile Include="Interfaces.cs" />
|
||||||
|
<Compile Include="InternalInterfaces.cs" />
|
||||||
|
<Compile Include="PriorityQueue.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
<Compile Include="SLExt.cs" />
|
||||||
|
<Compile Include="SmartThreadPool.cs" />
|
||||||
|
<Compile Include="SmartThreadPool.ThreadEntry.cs" />
|
||||||
|
<Compile Include="Stopwatch.cs" />
|
||||||
|
<Compile Include="STPEventWaitHandle.cs" />
|
||||||
|
<Compile Include="STPPerformanceCounter.cs" />
|
||||||
|
<Compile Include="STPStartInfo.cs" />
|
||||||
|
<Compile Include="SynchronizedDictionary.cs" />
|
||||||
|
<Compile Include="WIGStartInfo.cs" />
|
||||||
|
<Compile Include="WorkItem.cs" />
|
||||||
|
<Compile Include="WorkItem.WorkItemResult.cs" />
|
||||||
|
<Compile Include="WorkItemFactory.cs" />
|
||||||
|
<Compile Include="WorkItemInfo.cs" />
|
||||||
|
<Compile Include="WorkItemResultTWrapper.cs" />
|
||||||
|
<Compile Include="WorkItemsGroup.cs" />
|
||||||
|
<Compile Include="WorkItemsGroupBase.cs" />
|
||||||
|
<Compile Include="WorkItemsQueue.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildExtensionsPath)\Microsoft\Silverlight for Phone\$(TargetFrameworkVersion)\Microsoft.Silverlight.$(TargetFrameworkProfile).Overrides.targets" />
|
||||||
|
<Import Project="$(MSBuildExtensionsPath)\Microsoft\Silverlight for Phone\$(TargetFrameworkVersion)\Microsoft.Silverlight.CSharp.targets" />
|
||||||
|
<ProjectExtensions />
|
||||||
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
|
<Target Name="BeforeBuild">
|
||||||
|
</Target>
|
||||||
|
<Target Name="AfterBuild">
|
||||||
|
</Target>
|
||||||
|
-->
|
||||||
|
</Project>
|
||||||
@@ -61,7 +61,7 @@ namespace Amib.Threading.Internal
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private object _state;
|
private object _state;
|
||||||
|
|
||||||
#if !(_WINDOWS_CE) && !(_SILVERLIGHT)
|
#if !(_WINDOWS_CE) && !(_SILVERLIGHT) && !(WINDOWS_PHONE)
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Stores the caller's context
|
/// Stores the caller's context
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -209,7 +209,7 @@ namespace Amib.Threading.Internal
|
|||||||
_workItemsGroup = workItemsGroup;
|
_workItemsGroup = workItemsGroup;
|
||||||
_workItemInfo = workItemInfo;
|
_workItemInfo = workItemInfo;
|
||||||
|
|
||||||
#if !(_WINDOWS_CE) && !(_SILVERLIGHT)
|
#if !(_WINDOWS_CE) && !(_SILVERLIGHT) && !(WINDOWS_PHONE)
|
||||||
if (_workItemInfo.UseCallerCallContext || _workItemInfo.UseCallerHttpContext)
|
if (_workItemInfo.UseCallerCallContext || _workItemInfo.UseCallerHttpContext)
|
||||||
{
|
{
|
||||||
_callerContext = CallerThreadContext.Capture(_workItemInfo.UseCallerCallContext, _workItemInfo.UseCallerHttpContext);
|
_callerContext = CallerThreadContext.Capture(_workItemInfo.UseCallerCallContext, _workItemInfo.UseCallerHttpContext);
|
||||||
@@ -360,7 +360,7 @@ namespace Amib.Threading.Internal
|
|||||||
private void ExecuteWorkItem()
|
private void ExecuteWorkItem()
|
||||||
{
|
{
|
||||||
|
|
||||||
#if !(_WINDOWS_CE) && !(_SILVERLIGHT)
|
#if !(_WINDOWS_CE) && !(_SILVERLIGHT) && !(WINDOWS_PHONE)
|
||||||
CallerThreadContext ctc = null;
|
CallerThreadContext ctc = null;
|
||||||
if (null != _callerContext)
|
if (null != _callerContext)
|
||||||
{
|
{
|
||||||
@@ -400,18 +400,19 @@ namespace Amib.Threading.Internal
|
|||||||
// We must treat the ThreadAbortException or else it will be stored in the exception variable
|
// We must treat the ThreadAbortException or else it will be stored in the exception variable
|
||||||
catch (ThreadAbortException tae)
|
catch (ThreadAbortException tae)
|
||||||
{
|
{
|
||||||
|
tae.GetHashCode();
|
||||||
// Check if the work item was cancelled
|
// Check if the work item was cancelled
|
||||||
// If we got a ThreadAbortException and the STP is not shutting down, it means the
|
// If we got a ThreadAbortException and the STP is not shutting down, it means the
|
||||||
// work items was cancelled.
|
// work items was cancelled.
|
||||||
if (!SmartThreadPool.CurrentThreadEntry.AssociatedSmartThreadPool.IsShuttingdown)
|
if (!SmartThreadPool.CurrentThreadEntry.AssociatedSmartThreadPool.IsShuttingdown)
|
||||||
{
|
{
|
||||||
#if !(_WINDOWS_CE) && !(_SILVERLIGHT)
|
#if !(_WINDOWS_CE) && !(_SILVERLIGHT) && !(WINDOWS_PHONE)
|
||||||
Thread.ResetAbort();
|
Thread.ResetAbort();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !(_WINDOWS_CE) && !(_SILVERLIGHT)
|
#if !(_WINDOWS_CE) && !(_SILVERLIGHT) && !(WINDOWS_PHONE)
|
||||||
if (null != _callerContext)
|
if (null != _callerContext)
|
||||||
{
|
{
|
||||||
CallerThreadContext.Apply(ctc);
|
CallerThreadContext.Apply(ctc);
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ namespace Amib.Threading.Internal
|
|||||||
{
|
{
|
||||||
throw new ArgumentOutOfRangeException(
|
throw new ArgumentOutOfRangeException(
|
||||||
"concurrency",
|
"concurrency",
|
||||||
#if !(_WINDOWS_CE) && !(_SILVERLIGHT)
|
#if !(_WINDOWS_CE) && !(_SILVERLIGHT) && !(WINDOWS_PHONE)
|
||||||
concurrency,
|
concurrency,
|
||||||
#endif
|
#endif
|
||||||
"concurrency must be greater than zero");
|
"concurrency must be greater than zero");
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
|
||||||
namespace Amib.Threading.Internal
|
namespace Amib.Threading.Internal
|
||||||
@@ -33,7 +34,9 @@ namespace Amib.Threading.Internal
|
|||||||
private bool _isWorkItemsQueueActive = true;
|
private bool _isWorkItemsQueueActive = true;
|
||||||
|
|
||||||
|
|
||||||
#if (_WINDOWS_CE)
|
#if (WINDOWS_PHONE)
|
||||||
|
private static readonly Dictionary<int, WaiterEntry> _waiterEntries = new Dictionary<int, WaiterEntry>();
|
||||||
|
#elif (_WINDOWS_CE)
|
||||||
private static LocalDataStoreSlot _waiterEntrySlot = Thread.AllocateDataSlot();
|
private static LocalDataStoreSlot _waiterEntrySlot = Thread.AllocateDataSlot();
|
||||||
#else
|
#else
|
||||||
|
|
||||||
@@ -47,7 +50,27 @@ namespace Amib.Threading.Internal
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private static WaiterEntry CurrentWaiterEntry
|
private static WaiterEntry CurrentWaiterEntry
|
||||||
{
|
{
|
||||||
#if (_WINDOWS_CE)
|
#if (WINDOWS_PHONE)
|
||||||
|
get
|
||||||
|
{
|
||||||
|
lock (_waiterEntries)
|
||||||
|
{
|
||||||
|
WaiterEntry waiterEntry;
|
||||||
|
if (_waiterEntries.TryGetValue(Thread.CurrentThread.ManagedThreadId, out waiterEntry))
|
||||||
|
{
|
||||||
|
return waiterEntry;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
lock (_waiterEntries)
|
||||||
|
{
|
||||||
|
_waiterEntries[Thread.CurrentThread.ManagedThreadId] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#elif (_WINDOWS_CE)
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return Thread.GetData(_waiterEntrySlot) as WaiterEntry;
|
return Thread.GetData(_waiterEntrySlot) as WaiterEntry;
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ProjectType>Local</ProjectType>
|
<ProjectType>Local</ProjectType>
|
||||||
<ProductVersion>9.0.30729</ProductVersion>
|
<ProductVersion>9.0.30729</ProductVersion>
|
||||||
@@ -24,7 +25,8 @@
|
|||||||
</FileUpgradeFlags>
|
</FileUpgradeFlags>
|
||||||
<UpgradeBackupLocation>
|
<UpgradeBackupLocation>
|
||||||
</UpgradeBackupLocation>
|
</UpgradeBackupLocation>
|
||||||
<OldToolsVersion>2.0</OldToolsVersion>
|
<OldToolsVersion>3.5</OldToolsVersion>
|
||||||
|
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<OutputPath>bin\Windows\Debug\</OutputPath>
|
<OutputPath>bin\Windows\Debug\</OutputPath>
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ProjectType>Local</ProjectType>
|
<ProjectType>Local</ProjectType>
|
||||||
<ProductVersion>9.0.30729</ProductVersion>
|
<ProductVersion>9.0.30729</ProductVersion>
|
||||||
@@ -24,7 +25,8 @@
|
|||||||
</FileUpgradeFlags>
|
</FileUpgradeFlags>
|
||||||
<UpgradeBackupLocation>
|
<UpgradeBackupLocation>
|
||||||
</UpgradeBackupLocation>
|
</UpgradeBackupLocation>
|
||||||
<OldToolsVersion>2.0</OldToolsVersion>
|
<OldToolsVersion>3.5</OldToolsVersion>
|
||||||
|
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<OutputPath>bin\Mono\Debug\</OutputPath>
|
<OutputPath>bin\Mono\Debug\</OutputPath>
|
||||||
|
|||||||
+2
-2
@@ -1,7 +1,7 @@
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// <auto-generated>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// This code was generated by a tool.
|
||||||
// Runtime Version:2.0.50727.3053
|
// Runtime Version:4.0.30319.544
|
||||||
//
|
//
|
||||||
// Changes to this file may cause incorrect behavior and will be lost if
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
// the code is regenerated.
|
// the code is regenerated.
|
||||||
@@ -19,7 +19,7 @@ namespace UsageControl.Properties {
|
|||||||
// class via a tool like ResGen or Visual Studio.
|
// class via a tool like ResGen or Visual Studio.
|
||||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||||
// with the /str option, or rebuild your VS project.
|
// with the /str option, or rebuild your VS project.
|
||||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
internal class Resources {
|
internal class Resources {
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ProjectType>Local</ProjectType>
|
<ProjectType>Local</ProjectType>
|
||||||
<ProductVersion>9.0.30729</ProductVersion>
|
<ProductVersion>9.0.30729</ProductVersion>
|
||||||
@@ -26,7 +27,8 @@
|
|||||||
</FileUpgradeFlags>
|
</FileUpgradeFlags>
|
||||||
<UpgradeBackupLocation>
|
<UpgradeBackupLocation>
|
||||||
</UpgradeBackupLocation>
|
</UpgradeBackupLocation>
|
||||||
<OldToolsVersion>2.0</OldToolsVersion>
|
<OldToolsVersion>3.5</OldToolsVersion>
|
||||||
|
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<OutputPath>bin\Debug\</OutputPath>
|
<OutputPath>bin\Debug\</OutputPath>
|
||||||
|
|||||||
+2
-2
@@ -1,7 +1,7 @@
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// <auto-generated>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// This code was generated by a tool.
|
||||||
// Runtime Version:2.0.50727.3053
|
// Runtime Version:4.0.30319.544
|
||||||
//
|
//
|
||||||
// Changes to this file may cause incorrect behavior and will be lost if
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
// the code is regenerated.
|
// the code is regenerated.
|
||||||
@@ -19,7 +19,7 @@ namespace WorkItemsGroupDemo.Properties {
|
|||||||
// class via a tool like ResGen or Visual Studio.
|
// class via a tool like ResGen or Visual Studio.
|
||||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||||
// with the /str option, or rebuild your VS project.
|
// with the /str option, or rebuild your VS project.
|
||||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
internal class Resources {
|
internal class Resources {
|
||||||
|
|||||||
+2
-2
@@ -1,7 +1,7 @@
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// <auto-generated>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// This code was generated by a tool.
|
||||||
// Runtime Version:2.0.50727.3053
|
// Runtime Version:4.0.30319.544
|
||||||
//
|
//
|
||||||
// Changes to this file may cause incorrect behavior and will be lost if
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
// the code is regenerated.
|
// the code is regenerated.
|
||||||
@@ -12,7 +12,7 @@ namespace WorkItemsGroupDemo.Properties {
|
|||||||
|
|
||||||
|
|
||||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
|
||||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||||
|
|
||||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
@@ -12,9 +13,10 @@
|
|||||||
<StartupObject>WorkItemsGroupDemo.Program</StartupObject>
|
<StartupObject>WorkItemsGroupDemo.Program</StartupObject>
|
||||||
<FileUpgradeFlags>
|
<FileUpgradeFlags>
|
||||||
</FileUpgradeFlags>
|
</FileUpgradeFlags>
|
||||||
<OldToolsVersion>2.0</OldToolsVersion>
|
<OldToolsVersion>3.5</OldToolsVersion>
|
||||||
<UpgradeBackupLocation>
|
<UpgradeBackupLocation>
|
||||||
</UpgradeBackupLocation>
|
</UpgradeBackupLocation>
|
||||||
|
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
@@ -12,9 +13,10 @@
|
|||||||
<StartupObject>WorkItemsGroupDemo.Program</StartupObject>
|
<StartupObject>WorkItemsGroupDemo.Program</StartupObject>
|
||||||
<FileUpgradeFlags>
|
<FileUpgradeFlags>
|
||||||
</FileUpgradeFlags>
|
</FileUpgradeFlags>
|
||||||
<OldToolsVersion>2.0</OldToolsVersion>
|
<OldToolsVersion>3.5</OldToolsVersion>
|
||||||
<UpgradeBackupLocation>
|
<UpgradeBackupLocation>
|
||||||
</UpgradeBackupLocation>
|
</UpgradeBackupLocation>
|
||||||
|
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
|||||||
Reference in New Issue
Block a user