Gestione status dei thread

This commit is contained in:
Maddo Scientisto 2021-03-04 10:44:09 +01:00
commit 9794ce1abb
35 changed files with 16112 additions and 30 deletions

View file

@ -0,0 +1,32 @@
using System;
using System.Reflection;
using System.Runtime.InteropServices;
// 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.
// Review the values of the assembly attributes
[assembly: AssemblyTitle("Image Catalog")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyCompany("FornaSoft")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("(C) 2002-08")]
[assembly: AssemblyTrademark("")]
[assembly: CLSCompliant(true)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("948AA2AA-5BED-4DD5-9C67-3126EE9109C6")]
// 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 Build and Revision Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.74.*")]

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

1190
imagecatalog/ExifReader.cs Normal file

File diff suppressed because it is too large Load diff

261
imagecatalog/FileHelper.cs Normal file
View file

@ -0,0 +1,261 @@
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
namespace ImageCatalog
{
public class FileHelper
{
// Private dirSourceDest As Dictionary(Of FileInfo, DirectoryInfo)
private int filesPerFolder;
private string suffix;
private int counterSize;
private int numerationType;
private string filter;
private bool separateFiles;
private string extensions = "*.jpg,*.png,*.gif";
public enum numerazione
{
Progressiva,
Files
}
/// <summary>
/// Preparazione per la separazione
/// </summary>
/// <param name="filesPerFolder"></param>
/// <param name="suffix"></param>
/// <param name="counterSize"></param>
/// <param name="numerationType"></param>
/// <remarks></remarks>
public FileHelper(int filesPerFolder, string suffix, int counterSize, int numerationType)
{
this.filesPerFolder = filesPerFolder;
this.suffix = suffix;
this.counterSize = counterSize;
this.numerationType = numerationType;
separateFiles = true;
}
/// <summary>
/// nessuna separazione
/// </summary>
/// <remarks></remarks>
public FileHelper()
{
separateFiles = false;
}
public Dictionary<FileInfo, DirectoryInfo> GetFilesRecursive(DirectoryInfo root, DirectoryInfo destRoot, string filter)
{
var dirSourceDest = new Dictionary<FileInfo, DirectoryInfo>();
var result = new List<FileInfo>();
// Dim stack As New Stack(Of DirectoryInfo)
var stack = new Stack<KeyValuePair<DirectoryInfo, DirectoryInfo>>();
this.filter = filter;
var pair = new KeyValuePair<DirectoryInfo, DirectoryInfo>();
// stack.Push(root)
stack.Push(new KeyValuePair<DirectoryInfo, DirectoryInfo>(root, destRoot));
while (stack.Count > 0)
{
var curDirKV = stack.Pop();
// curDirKP = stack.Pop()
var dir = curDirKV.Key;
var dDir = curDirKV.Value;
try
{
// result.AddRange(dir.GetFiles(filter, SearchOption.TopDirectoryOnly))
// dividere file qui
if (filesPerFolder > 0 & separateFiles)
{
appendDictionary(dirSourceDest, dividiFilesInDir(dir, dDir));
}
else
{
appendDictionary(dirSourceDest, getAllFilesInDir(dir, dDir));
}
foreach (DirectoryInfo subDirectory in dir.GetDirectories())
stack.Push(new KeyValuePair<DirectoryInfo, DirectoryInfo>(subDirectory, new DirectoryInfo(Path.Combine(dDir.FullName, subDirectory.Name))));
}
catch (Exception ex)
{
var e = ex.Demystify();
Console.WriteLine(e);
Console.WriteLine(e.Message);
Console.WriteLine(e.StackTrace);
}
}
return dirSourceDest;
}
// Public Class FileData
// Public File As FileInfo
// Public Directory As DirectoryInfo
// Public Sub New(newFile As FileInfo, newDirectory As DirectoryInfo)
// File = newFile
// Directory = newDirectory
// End Sub
// End Class
// Public Function GetFilesRecursiveParallel(ByVal root As DirectoryInfo, ByVal destRoot As DirectoryInfo, ByVal filter As String) As List(Of FileData)
// Dim dirSourceDest As New ConcurrentDictionary(Of FileInfo, DirectoryInfo)
// Dim result As New List(Of FileInfo)
// 'Dim stack As New Stack(Of DirectoryInfo)
// Dim stack As New Stack(Of KeyValuePair(Of DirectoryInfo, DirectoryInfo))
// Me.filter = filter
// Dim pair As New KeyValuePair(Of DirectoryInfo, DirectoryInfo)
// 'stack.Push(root)
// stack.Push(New KeyValuePair(Of DirectoryInfo, DirectoryInfo)(root, destRoot))
// Do While (stack.Count > 0)
// Dim curDirKV As KeyValuePair(Of DirectoryInfo, DirectoryInfo) = stack.Pop
// 'curDirKP = stack.Pop()
// Dim dir As DirectoryInfo = curDirKV.Key
// Dim dDir As DirectoryInfo = curDirKV.Value
// Try
// 'result.AddRange(dir.GetFiles(filter, SearchOption.TopDirectoryOnly))
// ' dividere file qui
// If filesPerFolder > 0 And separateFiles Then
// AppendDictionaryConcurrent(dirSourceDest, DividiFilesInDirConcurrent(dir, dDir))
// Else
// AppendDictionaryConcurrent(dirSourceDest, DividiFilesInDirConcurrent(dir, dDir))
// End If
// For Each subDirectory As DirectoryInfo In dir.GetDirectories
// stack.Push(New KeyValuePair(Of DirectoryInfo, DirectoryInfo)(subDirectory, New DirectoryInfo(Path.Combine(dDir.FullName, subDirectory.Name))))
// Next
// Catch ex As Exception
// ' TODO: FARE QUALCOSA
// End Try
// Loop
// Dim resultData As New List(Of FileData)
// resultData.AddRange(From p In dirSourceDest Select New FileData(p.Key, p.Value))
// Return resultData
// 'Return dirSourceDest
// End Function
public Dictionary<FileInfo, DirectoryInfo> appendDictionary(Dictionary<FileInfo, DirectoryInfo> dictA, Dictionary<FileInfo, DirectoryInfo> dictB)
{
foreach (KeyValuePair<FileInfo, DirectoryInfo> pair in dictB)
dictA.Add(pair.Key, pair.Value);
return dictA;
}
// Public Function AppendDictionaryConcurrent(ByVal dictA As ConcurrentDictionary(Of FileInfo, DirectoryInfo), ByVal dictB As ConcurrentDictionary(Of FileInfo, DirectoryInfo)) As ConcurrentDictionary(Of FileInfo, DirectoryInfo)
// For Each pair As KeyValuePair(Of FileInfo, DirectoryInfo) In dictB
// dictA.TryAdd(pair.Key, pair.Value)
// 'dictA.Add(pair.Key, pair.Value)
// Next
// Return dictA
// End Function
public Dictionary<FileInfo, DirectoryInfo> getAllFilesInDir(DirectoryInfo dir, DirectoryInfo dirDest)
{
var dict = new Dictionary<FileInfo, DirectoryInfo>();
foreach (FileInfo File in dir.GetFiles(filter))
dict.Add(File, new DirectoryInfo(Path.Combine(dirDest.FullName, File.Name)));
return dict;
}
private Dictionary<FileInfo, DirectoryInfo> dividiFilesInDir(DirectoryInfo dir, DirectoryInfo dirDest)
{
int filesCount = dir.GetFiles(filter).Count();
int contaFilePerDir = 0;
int contaDirPerDir = 0;
string tempText = string.Empty;
var foldersDict = new Dictionary<FileInfo, DirectoryInfo>();
DirectoryInfo destDir;
destDir = new DirectoryInfo(Path.Combine(dirDest.FullName));
foreach (FileInfo file in dir.GetFiles(filter))
{
contaFilePerDir += 1;
if (contaFilePerDir == contaDirPerDir * filesPerFolder + 1)
{
contaDirPerDir += 1;
if (numerationType == (int)numerazione.Progressiva)
{
tempText = contaDirPerDir.ToString();
}
else
{
tempText = (contaDirPerDir * filesPerFolder).ToString();
}
int i;
var loopTo = counterSize - tempText.Length;
for (i = 1; i <= loopTo; i++)
tempText = "0" + tempText;
destDir = new DirectoryInfo(Path.Combine(dirDest.FullName, suffix + tempText));
}
if (!destDir.Exists)
{
destDir.Create();
}
foldersDict.Add(file, destDir);
}
return foldersDict;
}
private ConcurrentDictionary<FileInfo, DirectoryInfo> DividiFilesInDirConcurrent(DirectoryInfo dir, DirectoryInfo dirDest)
{
int filesCount = dir.GetFiles(filter).Count();
int contaFilePerDir = 0;
int contaDirPerDir = 0;
string tempText = string.Empty;
var foldersDict = new ConcurrentDictionary<FileInfo, DirectoryInfo>();
DirectoryInfo destDir;
destDir = new DirectoryInfo(Path.Combine(dirDest.FullName));
foreach (FileInfo file in dir.GetFiles(filter))
{
contaFilePerDir += 1;
if (contaFilePerDir == contaDirPerDir * filesPerFolder + 1)
{
contaDirPerDir += 1;
if (numerationType == (int)numerazione.Progressiva)
{
tempText = contaDirPerDir.ToString();
}
else
{
tempText = (contaDirPerDir * filesPerFolder).ToString();
}
int i;
var loopTo = counterSize - tempText.Length;
for (i = 1; i <= loopTo; i++)
tempText = "0" + tempText;
destDir = new DirectoryInfo(Path.Combine(dirDest.FullName, suffix + tempText));
}
if (!destDir.Exists)
{
destDir.Create();
}
foldersDict.TryAdd(file, destDir);
}
return foldersDict;
}
}
}

3281
imagecatalog/Form1.cs Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,355 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectType>Local</ProjectType>
<ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{3F1E23DB-435E-0590-1EF5-735E898DBA3C}</ProjectGuid>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ApplicationIcon>
</ApplicationIcon>
<AssemblyKeyContainerName>
</AssemblyKeyContainerName>
<AssemblyName>ImageCatalog</AssemblyName>
<AssemblyOriginatorKeyFile>
</AssemblyOriginatorKeyFile>
<AssemblyOriginatorKeyMode>None</AssemblyOriginatorKeyMode>
<DefaultClientScript>JScript</DefaultClientScript>
<DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
<DefaultTargetSchema>IE50</DefaultTargetSchema>
<DelaySign>false</DelaySign>
<OutputType>WinExe</OutputType>
<OptionCompare>Binary</OptionCompare>
<OptionExplicit>On</OptionExplicit>
<OptionStrict>On</OptionStrict>
<RootNamespace>ImageCatalog</RootNamespace>
<StartupObject>ImageCatalog.My.MyApplication</StartupObject>
<FileUpgradeFlags>
</FileUpgradeFlags>
<MyType>WindowsForms</MyType>
<OldToolsVersion>3.5</OldToolsVersion>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<IsWebBootstrapper>true</IsWebBootstrapper>
<ApplicationManifest>My Project\app.manifest</ApplicationManifest>
<TargetFrameworkProfile>
</TargetFrameworkProfile>
<SccProjectName>SAK</SccProjectName>
<SccLocalPath>SAK</SccLocalPath>
<SccAuxPath>SAK</SccAuxPath>
<SccProvider>SAK</SccProvider>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
<PublishUrl>http://localhost/ImageCatalog/</PublishUrl>
<Install>true</Install>
<InstallFrom>Web</InstallFrom>
<UpdateEnabled>true</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.8.0.%2a</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
<DefaultItemExcludes>$(DefaultItemExcludes);$(ProjectDir)**\*.vb</DefaultItemExcludes>
<LangVersion>latest</LangVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>bin\</OutputPath>
<DocumentationFile>bin\ImageCatalog.xml</DocumentationFile>
<BaseAddress>285212672</BaseAddress>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>
</DefineConstants>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<DebugSymbols>true</DebugSymbols>
<Optimize>false</Optimize>
<RegisterForComInterop>false</RegisterForComInterop>
<RemoveIntegerChecks>false</RemoveIntegerChecks>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningLevel>1</WarningLevel>
<NoWarn>42016,42017,42018,42019,42032,42353,42354,42355</NoWarn>
<DebugType>full</DebugType>
<PlatformTarget>AnyCPU</PlatformTarget>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath>bin\</OutputPath>
<DocumentationFile>bin\ImageCatalog.xml</DocumentationFile>
<BaseAddress>285212672</BaseAddress>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>
</DefineConstants>
<DefineDebug>false</DefineDebug>
<DefineTrace>true</DefineTrace>
<DebugSymbols>false</DebugSymbols>
<Optimize>true</Optimize>
<RegisterForComInterop>false</RegisterForComInterop>
<RemoveIntegerChecks>false</RemoveIntegerChecks>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningLevel>1</WarningLevel>
<NoWarn>42016,42017,42018,42019,42032,42353,42354,42355</NoWarn>
<DebugType>none</DebugType>
<PlatformTarget>AnyCPU</PlatformTarget>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
<DebugSymbols>true</DebugSymbols>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\x64\Debug\</OutputPath>
<BaseAddress>285212672</BaseAddress>
<DocumentationFile>bin\x64\Debug\ImageCatalog.xml</DocumentationFile>
<WarningLevel>1</WarningLevel>
<NoWarn>42016,42017,42018,42019,42032,42353,42354,42355</NoWarn>
<DebugType>full</DebugType>
<PlatformTarget>x64</PlatformTarget>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
<DefineTrace>true</DefineTrace>
<OutputPath>bin\x64\Release\</OutputPath>
<BaseAddress>285212672</BaseAddress>
<DocumentationFile>bin\x64\Release\ImageCatalog.xml</DocumentationFile>
<Optimize>true</Optimize>
<WarningLevel>1</WarningLevel>
<NoWarn>42016,42017,42018,42019,42032,42353,42354,42355</NoWarn>
<PlatformTarget>x64</PlatformTarget>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\x86\Debug\</OutputPath>
<BaseAddress>285212672</BaseAddress>
<DocumentationFile>bin\x86\Debug\ImageCatalog.xml</DocumentationFile>
<WarningLevel>1</WarningLevel>
<NoWarn>42016,42017,42018,42019,42032,42353,42354,42355</NoWarn>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<CodeAnalysisLogFile>bin\ImageCatalog.exe.CodeAnalysisLog.xml</CodeAnalysisLogFile>
<CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
<CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRuleSetDirectories>;F:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
<CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets>
<CodeAnalysisRuleDirectories>;F:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
<CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
<CodeAnalysisFailOnMissingRules>false</CodeAnalysisFailOnMissingRules>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<DefineTrace>true</DefineTrace>
<OutputPath>bin\x86\Release\</OutputPath>
<BaseAddress>285212672</BaseAddress>
<DocumentationFile>bin\x86\Release\ImageCatalog.xml</DocumentationFile>
<Optimize>true</Optimize>
<WarningLevel>1</WarningLevel>
<NoWarn>42016,42017,42018,42019,42032,42353,42354,42355</NoWarn>
<PlatformTarget>x86</PlatformTarget>
<CodeAnalysisLogFile>bin\ImageCatalog.exe.CodeAnalysisLog.xml</CodeAnalysisLogFile>
<CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
<CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRuleSetDirectories>;F:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
<CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets>
<CodeAnalysisRuleDirectories>;F:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
<CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.VisualBasic" />
<Reference Include="Ben.Demystifier, Version=0.3.0.0, Culture=neutral, PublicKeyToken=a6d206e05440431a, processorArchitecture=MSIL">
<HintPath>..\packages\Ben.Demystifier.0.3.0\lib\net45\Ben.Demystifier.dll</HintPath>
</Reference>
<Reference Include="Microsoft.VisualBasic.PowerPacks.Vs, Version=10.0.0.0" />
<Reference Include="Microsoft.WindowsAPICodePack, Version=1.1.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.WindowsAPICodePack-Core.1.1.0.2\lib\Microsoft.WindowsAPICodePack.dll</HintPath>
</Reference>
<Reference Include="Microsoft.WindowsAPICodePack.Shell, Version=1.1.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.WindowsAPICodePack-Shell.1.1.0.0\lib\Microsoft.WindowsAPICodePack.Shell.dll</HintPath>
</Reference>
<Reference Include="Microsoft.WindowsAPICodePack.ShellExtensions, Version=1.1.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.WindowsAPICodePack-Shell.1.1.0.0\lib\Microsoft.WindowsAPICodePack.ShellExtensions.dll</HintPath>
</Reference>
<Reference Include="System">
<Name>System</Name>
</Reference>
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.Collections.Immutable, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Collections.Immutable.5.0.0\lib\net461\System.Collections.Immutable.dll</HintPath>
</Reference>
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
<Private>True</Private>
</Reference>
<Reference Include="System.Data">
<Name>System.Data</Name>
<Private>True</Private>
</Reference>
<Reference Include="System.Drawing">
<Name>System.Drawing</Name>
<Private>True</Private>
</Reference>
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
</Reference>
<Reference Include="System.Reflection.Metadata, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Reflection.Metadata.5.0.0\lib\net461\System.Reflection.Metadata.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.5.0.0\lib\net45\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
</Reference>
<Reference Include="System.Windows.Forms">
<Name>System.Windows.Forms</Name>
</Reference>
<Reference Include="System.Xml">
<Name>System.XML</Name>
</Reference>
</ItemGroup>
<ItemGroup>
<Import Include="Microsoft.VisualBasic" />
<Import Include="System" />
<Import Include="System.Collections" />
<Import Include="System.Data" />
<Import Include="System.Diagnostics" />
<Import Include="System.Drawing" />
<Import Include="System.Linq" />
<Import Include="System.Windows.Forms" />
</ItemGroup>
<ItemGroup>
<Compile Include="My Project\MyNamespace.Dynamic.Designer.cs" />
<Compile Include="My Project\MyNamespace.Static.1.Designer.cs" />
<Compile Include="AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="FileHelper.cs" />
<Compile Include="CreaImmagineSeparateMultiCore.cs" />
<Compile Include="CreaImmagineSeparateThread.cs" />
<Compile Include="ExifReader.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Form1.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="LoadBuffer.cs" />
<Compile Include="MainForm.Designer.cs">
<DependentUpon>MainForm.cs</DependentUpon>
</Compile>
<Compile Include="MainForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Module2.cs" />
<Compile Include="My Project\Application.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Application.myapp</DependentUpon>
</Compile>
<Compile Include="My Project\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
<DependentUpon>Settings.settings</DependentUpon>
</Compile>
<Compile Include="PicSettings.cs" />
<Compile Include="XYThreadPool.cs" />
<Compile Include="Module1.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="ParametriSetup.cs">
<SubType>Code</SubType>
</Compile>
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
</EmbeddedResource>
<None Include="My Project\Application.myapp">
<Generator>MyApplicationCodeGenerator</Generator>
<LastGenOutput>Application.Designer.cs</LastGenOutput>
</None>
<None Include="app.config" />
<None Include="ClassDiagram1.cd" />
<None Include="My Project\app.manifest" />
<None Include="My Project\Settings.settings">
<CustomToolNamespace>ImageCatalog.My</CustomToolNamespace>
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
<Visible>False</Visible>
<ProductName>.NET Framework 2.0 %28x86%29</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
<Visible>False</Visible>
<ProductName>.NET Framework 3.0 %28x86%29</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
<Visible>False</Visible>
<ProductName>Windows Installer 3.1</ProductName>
<Install>true</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<Folder Include="Sorgenti\" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\CatalogVbLib\CatalogVbLib.vbproj">
<Project>{44465926-240d-473f-90b8-786ba4384406}</Project>
<Name>CatalogVbLib</Name>
</ProjectReference>
<ProjectReference Include="..\MaddoShared\MaddoShared.csproj">
<Project>{aebfe9e3-277c-4a7b-8448-145d1b11998b}</Project>
<Name>MaddoShared</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PreBuildEvent>
</PreBuildEvent>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
</Project>

View file

@ -0,0 +1,13 @@
using System.Collections.Generic;
using System.Drawing;
using System.IO;
namespace ImageCatalog
{
public class LoadBuffer
{
public List<Image> imageList = new List<Image>();
public List<FileInfo> picSourceList = new List<FileInfo>();
public List<List<FileInfo>> dirSourceList = new List<List<FileInfo>>();
}
}

2169
imagecatalog/MainForm.Designer.cs generated Normal file

File diff suppressed because it is too large Load diff

1675
imagecatalog/MainForm.cs Normal file

File diff suppressed because it is too large Load diff

158
imagecatalog/Module1.cs Normal file
View file

@ -0,0 +1,158 @@

namespace ImageCatalog
{
static class Module1
{
// Sub CaricaIni()
// Dim Parola As String
// Dim i As Integer
// Dim p As Integer
// If Dir$(NomeIni) <> "" Then
// Open NomeIni For Input As #1
// Input #1, NumeroMacchine
// For i = 1 To NumeroMacchine
// Input #1, NomeMacchina(i)
// Input #1, CodiceMacchina(i)
// Input #1, TempoMacchinaFerma(i)
// Input #1, LunghezzaImpulso(i)
// Input #1, TempoRegistrazioneDati(i)
// Input #1, RangoVelocita(i)
// Input #1, MaxVelocita(i)
// Input #1, NumeroRulli(i)
// Input #1, NumeroFili(i)
// Input #1, IndirizzoMacchina(i)
// Input #1, StampaAutoMacchina(i)
// Next i
// Input #1, SettimanaInizio
// Input #1, SettimanaFine
// Input #1, Chiusura
// Input #1, OrarioStampa
// Input #1, OrarioStampaSecondi
// Input #1, OrarioAccendiProg
// Input #1, OrarioSpengiProg
// Input #1, NomeDitta
// Input #1, StampaAutoGiorno
// Input #1, StampaAutoWeek
// Input #1, StampaGiornoRiepilogo
// Input #1, StampaGiornoGrafTMFA
// Input #1, StampaGiornoGrafVel
// Input #1, StampaWeekRiepilogo
// Input #1, StampaWeekGrafTMFA
// Input #1, StampaWeekGrafVel
// Input #1, StampanteManuale
// Input #1, StampanteAutomatica
// Input #1, StampanteNomeAghi
// Input #1, StampanteNomeLaser
// Input #1, NomePortaComm
// Input #1, TurniTotali
// For p = 1 To TurniTotali
// Input #1, TurnoNumero(p)
// Input #1, TurnoInizioMinuti(p)
// Input #1, TurnoFineMinuti(p)
// Input #1, TurnoInizioSecondi(p)
// Input #1, TurnoFineSecondi(p)
// Next p
// Input #1, Parola
// Close #1
// PassWordAmm = Trim$(Cripta(Parola, ChiaveCriDecri))
// End If
// End Sub
// Sub SalvaIni()
// Dim Conto As Single
// Dim Nomefile As String
// Dim NomeDir As String
// Dim Testo As String
// Dim TestoA As String
// Dim i As Integer
// Dim k As Integer
// Dim p As Integer
// Dim Lungo As Integer
// Dim Resto As Integer
// Dim Primo(3) As String
// For i = 1 To NumeroMacchine
// If Right$(DirectoryProgramma, 1) = "\" Then
// NomeDir = DirectoryProgramma + NomeMacchina(i)
// Else
// NomeDir = DirectoryProgramma + "\" + NomeMacchina(i)
// End If
// Nomefile = NomeDir + "\" + NomeMacchina(i) + ".SYS"
// If Dir$(Nomefile) = "" Then MkDir(NomeDir)
// Next i
// Open NomeIni For Output As #3
// Print #3, NumeroMacchine
// For i = 1 To NumeroMacchine
// If Right$(DirectoryProgramma, 1) = "\" Then
// Nomefile = DirectoryProgramma + NomeMacchina(i) + "\" + NomeMacchina(i) + ".SYS"
// Else
// Nomefile = DirectoryProgramma + "\" + NomeMacchina(i) + "\" + NomeMacchina(i) + ".SYS"
// End If
// Open Nomefile For Output As #4
// Write #4, NomeMacchina(i)
// Write #4, CodiceMacchina(i)
// Print #4, TempoMacchinaFerma(i)
// Print #4, LunghezzaImpulso(i)
// Print #4, TempoRegistrazioneDati(i)
// Print #4, RangoVelocita(i)
// Print #4, MaxVelocita(i)
// Print #4, NumeroRulli(i)
// Print #4, NumeroFili(i)
// Print #4, IndirizzoMacchina(i)
// Write #4, StampaAutoMacchina(i)
// Close #4
// Write #3, NomeMacchina(i)
// Write #3, CodiceMacchina(i)
// Print #3, TempoMacchinaFerma(i)
// Print #3, LunghezzaImpulso(i)
// Print #3, TempoRegistrazioneDati(i)
// Print #3, RangoVelocita(i)
// Print #3, MaxVelocita(i)
// Print #3, NumeroRulli(i)
// Print #3, NumeroFili(i)
// Print #3, IndirizzoMacchina(i)
// Write #3, StampaAutoMacchina(i)
// Next i
// Print #3, SettimanaInizio
// Print #3, SettimanaFine
// Write #3, Chiusura
// Write #3, OrarioStampa
// Print #3, OrarioStampaSecondi
// Write #3, OrarioAccendiProg
// Write #3, OrarioSpengiProg
// Write #3, NomeDitta
// Write #3, StampaAutoGiorno
// Write #3, StampaAutoWeek
// Write #3, StampaGiornoRiepilogo
// Write #3, StampaGiornoGrafTMFA
// Write #3, StampaGiornoGrafVel
// Write #3, StampaWeekRiepilogo
// Write #3, StampaWeekGrafTMFA
// Write #3, StampaWeekGrafVel
// Write #3, StampanteManuale
// Write #3, StampanteAutomatica
// Write #3, StampanteNomeAghi
// Write #3, StampanteNomeLaser
// Write #3, NomePortaComm
// Print #3, TurniTotali
// For p = 1 To TurniTotali
// Print #3, TurnoNumero(p)
// Print #3, TurnoInizioMinuti(p)
// Print #3, TurnoFineMinuti(p)
// Print #3, TurnoInizioSecondi(p)
// Print #3, TurnoFineSecondi(p)
// Next p
// Testo = Cripta(PassWordAmm, ChiaveCriDecri)
// Write #3, Testo
// Close #3
// End Sub
public static ParametriSetup SetupIni = new ParametriSetup();
}
}

7
imagecatalog/Module2.cs Normal file
View file

@ -0,0 +1,7 @@

namespace ImageCatalog
{
static class Module2
{
}
}

View file

@ -0,0 +1,38 @@
// ------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
// ------------------------------------------------------------------------------
using System.Diagnostics;
namespace ImageCatalog.My
{
// NOTE: This file is auto-generated; do not modify it directly. To make changes,
// or if you encounter build errors in this file, go to the Project Designer
// (go to Project Properties or double-click the My Project node in
// Solution Explorer), and make changes on the Application tab.
//
internal partial class MyApplication
{
[DebuggerStepThrough()]
public MyApplication() : base(Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows)
{
IsSingleInstance = false;
EnableVisualStyles = true;
SaveMySettingsOnExit = true;
ShutdownStyle = Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses;
}
[DebuggerStepThrough()]
protected override void OnCreateMainForm()
{
MainForm = MyProject.Forms.MainForm;
}
}
}

View file

@ -0,0 +1,58 @@
using System;
using System.ComponentModel;
using System.Diagnostics;
namespace ImageCatalog.My
{
internal static partial class MyProject
{
internal partial class MyForms
{
[EditorBrowsable(EditorBrowsableState.Never)]
public Form1 m_Form1;
public Form1 Form1
{
[DebuggerHidden]
get
{
m_Form1 = Create__Instance__(m_Form1);
return m_Form1;
}
[DebuggerHidden]
set
{
if (ReferenceEquals(value, m_Form1))
return;
if (value is object)
throw new ArgumentException("Property can only be set to Nothing");
Dispose__Instance__(ref m_Form1);
}
}
[EditorBrowsable(EditorBrowsableState.Never)]
public MainForm m_MainForm;
public MainForm MainForm
{
[DebuggerHidden]
get
{
m_MainForm = Create__Instance__(m_MainForm);
return m_MainForm;
}
[DebuggerHidden]
set
{
if (ReferenceEquals(value, m_MainForm))
return;
if (value is object)
throw new ArgumentException("Property can only be set to Nothing");
Dispose__Instance__(ref m_MainForm);
}
}
}
}
}

View file

@ -0,0 +1,305 @@
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Collections;
using System.Diagnostics;
using System.Windows.Forms;
using Microsoft.VisualBasic;
/* TODO ERROR: Skipped IfDirectiveTrivia *//* TODO ERROR: Skipped DisabledTextTrivia *//* TODO ERROR: Skipped EndIfDirectiveTrivia */
/* TODO ERROR: Skipped IfDirectiveTrivia */
/* TODO ERROR: Skipped DefineDirectiveTrivia *//* TODO ERROR: Skipped DefineDirectiveTrivia *//* TODO ERROR: Skipped DefineDirectiveTrivia *//* TODO ERROR: Skipped DefineDirectiveTrivia *//* TODO ERROR: Skipped DefineDirectiveTrivia */
/* TODO ERROR: Skipped ElifDirectiveTrivia *//* TODO ERROR: Skipped DisabledTextTrivia *//* TODO ERROR: Skipped ElifDirectiveTrivia *//* TODO ERROR: Skipped DisabledTextTrivia *//* TODO ERROR: Skipped ElifDirectiveTrivia *//* TODO ERROR: Skipped DisabledTextTrivia *//* TODO ERROR: Skipped ElifDirectiveTrivia *//* TODO ERROR: Skipped DisabledTextTrivia *//* TODO ERROR: Skipped ElifDirectiveTrivia *//* TODO ERROR: Skipped DisabledTextTrivia *//* TODO ERROR: Skipped ElifDirectiveTrivia *//* TODO ERROR: Skipped DisabledTextTrivia *//* TODO ERROR: Skipped ElifDirectiveTrivia *//* TODO ERROR: Skipped DisabledTextTrivia *//* TODO ERROR: Skipped EndIfDirectiveTrivia */
/* TODO ERROR: Skipped IfDirectiveTrivia */
namespace ImageCatalog.My
{
/* TODO ERROR: Skipped IfDirectiveTrivia */
[System.CodeDom.Compiler.GeneratedCode("MyTemplate", "11.0.0.0")]
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
/* TODO ERROR: Skipped IfDirectiveTrivia */
internal partial class MyApplication : Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase
{
/* TODO ERROR: Skipped IfDirectiveTrivia */
[STAThread()]
[DebuggerHidden()]
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Advanced)]
internal static void Main(string[] Args)
{
try
{
Application.SetCompatibleTextRenderingDefault(UseCompatibleTextRendering);
}
finally
{
}
MyProject.Application.Run(Args);
}
/* TODO ERROR: Skipped EndIfDirectiveTrivia */
/* TODO ERROR: Skipped ElifDirectiveTrivia *//* TODO ERROR: Skipped DisabledTextTrivia *//* TODO ERROR: Skipped ElifDirectiveTrivia *//* TODO ERROR: Skipped DisabledTextTrivia *//* TODO ERROR: Skipped EndIfDirectiveTrivia */
}
/* TODO ERROR: Skipped EndIfDirectiveTrivia */
/* TODO ERROR: Skipped IfDirectiveTrivia */
[System.CodeDom.Compiler.GeneratedCode("MyTemplate", "11.0.0.0")]
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
/* TODO ERROR: Skipped IfDirectiveTrivia */
internal partial class MyComputer : Microsoft.VisualBasic.Devices.Computer
{
/* TODO ERROR: Skipped ElifDirectiveTrivia *//* TODO ERROR: Skipped DisabledTextTrivia *//* TODO ERROR: Skipped EndIfDirectiveTrivia */
[DebuggerHidden()]
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public MyComputer() : base()
{
}
}
/* TODO ERROR: Skipped EndIfDirectiveTrivia */
[HideModuleName()]
[System.CodeDom.Compiler.GeneratedCode("MyTemplate", "11.0.0.0")]
internal static partial class MyProject
{
/* TODO ERROR: Skipped IfDirectiveTrivia */
[System.ComponentModel.Design.HelpKeyword("My.Computer")]
internal static MyComputer Computer
{
[DebuggerHidden()]
get
{
return m_ComputerObjectProvider.GetInstance;
}
}
private readonly static ThreadSafeObjectProvider<MyComputer> m_ComputerObjectProvider = new ThreadSafeObjectProvider<MyComputer>();
/* TODO ERROR: Skipped EndIfDirectiveTrivia */
/* TODO ERROR: Skipped IfDirectiveTrivia */
[System.ComponentModel.Design.HelpKeyword("My.Application")]
internal static MyApplication Application
{
[DebuggerHidden()]
get
{
return m_AppObjectProvider.GetInstance;
}
}
private readonly static ThreadSafeObjectProvider<MyApplication> m_AppObjectProvider = new ThreadSafeObjectProvider<MyApplication>();
/* TODO ERROR: Skipped EndIfDirectiveTrivia */
/* TODO ERROR: Skipped IfDirectiveTrivia */
[System.ComponentModel.Design.HelpKeyword("My.User")]
internal static Microsoft.VisualBasic.ApplicationServices.User User
{
[DebuggerHidden()]
get
{
return m_UserObjectProvider.GetInstance;
}
}
private readonly static ThreadSafeObjectProvider<Microsoft.VisualBasic.ApplicationServices.User> m_UserObjectProvider = new ThreadSafeObjectProvider<Microsoft.VisualBasic.ApplicationServices.User>();
/* TODO ERROR: Skipped ElifDirectiveTrivia *//* TODO ERROR: Skipped DisabledTextTrivia *//* TODO ERROR: Skipped EndIfDirectiveTrivia */
/* TODO ERROR: Skipped IfDirectiveTrivia */
/* TODO ERROR: Skipped DefineDirectiveTrivia */
[System.ComponentModel.Design.HelpKeyword("My.Forms")]
internal static MyForms Forms
{
[DebuggerHidden()]
get
{
return m_MyFormsObjectProvider.GetInstance;
}
}
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
[MyGroupCollection("System.Windows.Forms.Form", "Create__Instance__", "Dispose__Instance__", "My.MyProject.Forms")]
internal sealed partial class MyForms
{
[DebuggerHidden()]
private static T Create__Instance__<T>(T Instance) where T : Form, new()
{
if (Instance is null || Instance.IsDisposed)
{
if (m_FormBeingCreated is object)
{
if (m_FormBeingCreated.ContainsKey(typeof(T)) == true)
{
throw new InvalidOperationException(Microsoft.VisualBasic.CompilerServices.Utils.GetResourceString("WinForms_RecursiveFormCreate"));
}
}
else
{
m_FormBeingCreated = new Hashtable();
}
m_FormBeingCreated.Add(typeof(T), null);
try
{
return new T();
}
catch (System.Reflection.TargetInvocationException ex) when (ex.InnerException is object)
{
string BetterMessage = Microsoft.VisualBasic.CompilerServices.Utils.GetResourceString("WinForms_SeeInnerException", ex.InnerException.Message);
throw new InvalidOperationException(BetterMessage, ex.InnerException);
}
finally
{
m_FormBeingCreated.Remove(typeof(T));
}
}
else
{
return Instance;
}
}
[DebuggerHidden()]
private void Dispose__Instance__<T>(ref T instance) where T : Form
{
instance.Dispose();
instance = null;
}
[DebuggerHidden()]
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public MyForms() : base()
{
}
[ThreadStatic()]
private static Hashtable m_FormBeingCreated;
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public override bool Equals(object o)
{
return base.Equals(o);
}
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public override int GetHashCode()
{
return base.GetHashCode();
}
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
internal new Type GetType()
{
return typeof(MyForms);
}
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public override string ToString()
{
return base.ToString();
}
}
private static ThreadSafeObjectProvider<MyForms> m_MyFormsObjectProvider = new ThreadSafeObjectProvider<MyForms>();
/* TODO ERROR: Skipped EndIfDirectiveTrivia */
/* TODO ERROR: Skipped IfDirectiveTrivia */
[System.ComponentModel.Design.HelpKeyword("My.WebServices")]
internal static MyWebServices WebServices
{
[DebuggerHidden()]
get
{
return m_MyWebServicesObjectProvider.GetInstance;
}
}
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
[MyGroupCollection("System.Web.Services.Protocols.SoapHttpClientProtocol", "Create__Instance__", "Dispose__Instance__", "")]
internal sealed class MyWebServices
{
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
[DebuggerHidden()]
public override bool Equals(object o)
{
return base.Equals(o);
}
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
[DebuggerHidden()]
public override int GetHashCode()
{
return base.GetHashCode();
}
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
[DebuggerHidden()]
internal new Type GetType()
{
return typeof(MyWebServices);
}
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
[DebuggerHidden()]
public override string ToString()
{
return base.ToString();
}
[DebuggerHidden()]
private static T Create__Instance__<T>(T instance) where T : new()
{
if (instance is null)
{
return new T();
}
else
{
return instance;
}
}
[DebuggerHidden()]
private void Dispose__Instance__<T>(ref T instance)
{
instance = default;
}
[DebuggerHidden()]
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public MyWebServices() : base()
{
}
}
private readonly static ThreadSafeObjectProvider<MyWebServices> m_MyWebServicesObjectProvider = new ThreadSafeObjectProvider<MyWebServices>();
/* TODO ERROR: Skipped EndIfDirectiveTrivia */
/* TODO ERROR: Skipped IfDirectiveTrivia *//* TODO ERROR: Skipped DisabledTextTrivia *//* TODO ERROR: Skipped EndIfDirectiveTrivia */
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
[System.Runtime.InteropServices.ComVisible(false)]
internal sealed class ThreadSafeObjectProvider<T> where T : new()
{
internal T GetInstance
{
/* TODO ERROR: Skipped IfDirectiveTrivia *//* TODO ERROR: Skipped DisabledTextTrivia *//* TODO ERROR: Skipped ElseDirectiveTrivia */
[DebuggerHidden()]
get
{
if (m_ThreadStaticValue is null)
m_ThreadStaticValue = new T();
return m_ThreadStaticValue;
}
/* TODO ERROR: Skipped EndIfDirectiveTrivia */
}
[DebuggerHidden()]
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public ThreadSafeObjectProvider() : base()
{
}
/* TODO ERROR: Skipped IfDirectiveTrivia *//* TODO ERROR: Skipped DisabledTextTrivia *//* TODO ERROR: Skipped ElseDirectiveTrivia */
[System.Runtime.CompilerServices.CompilerGenerated()]
[ThreadStatic()]
private static T m_ThreadStaticValue;
/* TODO ERROR: Skipped EndIfDirectiveTrivia */
}
}
}
/* TODO ERROR: Skipped EndIfDirectiveTrivia */

View file

@ -0,0 +1,26 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace ImageCatalog.My {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.8.1.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
}
}

View file

@ -0,0 +1,179 @@
using System;
using System.Data;
using Microsoft.VisualBasic;
namespace ImageCatalog
{
public class ParametriSetup
{
private DataSet _ElencoParametri;
private string _NomeFileSetup;
public ParametriSetup(string FileSetup)
{
_ElencoParametri = new DataSet();
_NomeFileSetup = FileSetup;
if (!string.IsNullOrEmpty(FileSetup))
{
CaricaParametriSetup();
}
}
public ParametriSetup()
{
_ElencoParametri = new DataSet();
_NomeFileSetup = "";
}
public void CaricaParametriSetup()
{
_ElencoParametri = LeggiXmlDataSet("Setup", _NomeFileSetup, "Nome");
}
public void SalvaParametriSetup()
{
if (System.IO.File.Exists(_NomeFileSetup) == true)
{
FileSystem.Kill(_NomeFileSetup);
}
_ElencoParametri.WriteXml(_NomeFileSetup);
}
public string LeggiParametroString(string NomeParametro)
{
string Risposta = "";
try
{
var LElenco = _ElencoParametri.Tables["Setup"].Select("Nome='" + NomeParametro + "'");
foreach (var LaRiga in LElenco)
Risposta = LaRiga["Valore"].ToString();
}
catch
{
Risposta = "";
}
return Risposta;
}
public bool LeggiParametroBoolean(string NomeParametro)
{
string Risposta = "";
try
{
var LElenco = _ElencoParametri.Tables["Setup"].Select("Nome='" + NomeParametro + "'");
foreach (var LaRiga in LElenco)
Risposta = LaRiga["Valore"].ToString();
}
catch
{
Risposta = "";
}
switch (Risposta.ToUpper() ?? "")
{
case "TRUE":
case "OK":
case "SI":
case "1":
case "YES":
case "VERO":
{
return true;
}
default:
{
return false;
}
}
}
public void AggiornaParametro(string NomeParametro, object ValoreParametro)
{
try
{
if (_ElencoParametri.Tables["Setup"] is null)
{
var TabellaTmp = new DataTable("Setup");
DataRow RigaTmp;
DataColumn LaColonna;
LaColonna = TabellaTmp.Columns.Add("Nome", Type.GetType("System.String"));
LaColonna = TabellaTmp.Columns.Add("Valore", Type.GetType("System.String"));
// * Aggiunge alla tabella tutte le righe
RigaTmp = TabellaTmp.NewRow();
RigaTmp["Nome"] = NomeParametro;
RigaTmp["Valore"] = ValoreParametro;
TabellaTmp.Rows.Add(RigaTmp);
_ElencoParametri.Tables.Add(TabellaTmp);
}
else
{
var LElenco = _ElencoParametri.Tables["Setup"].Select("Nome='" + NomeParametro + "'");
if (LElenco.Length == 0)
{
DataRow LaRiga;
LaRiga = _ElencoParametri.Tables["Setup"].NewRow();
LaRiga["Nome"] = NomeParametro;
LaRiga["Valore"] = ValoreParametro;
_ElencoParametri.Tables["Setup"].Rows.Add(LaRiga);
}
else
{
LElenco[0]["Valore"] = ValoreParametro;
}
}
}
catch
{
}
}
private DataTable LeggiXmlDataTable(string NomeTabella, string NomeFileXml, string NomeColonnaChiave = "")
{
// * Crea e Legge il dataset dal file xml
var DataSetXml = new DataSet();
DataSetXml.ReadXml(NomeFileXml);
// * Aggiunge il campo chiave
if (!string.IsNullOrEmpty(NomeColonnaChiave))
{
DataSetXml.Tables[NomeTabella].Constraints.Add(NomeColonnaChiave, DataSetXml.Tables[NomeTabella].Columns[NomeColonnaChiave], true);
}
// * Restituisce la risposta
return DataSetXml.Tables[NomeTabella];
}
private static DataSet LeggiXmlDataSet(string NomeTabella, string NomeFileXml, string NomeColonnaChiave = "")
{
// * Crea e Legge il dataset dal file xml
var DataSetXml = new DataSet();
DataSetXml.ReadXml(NomeFileXml);
// * Aggiunge il campo chiave
if (!string.IsNullOrEmpty(NomeColonnaChiave))
{
DataSetXml.Tables[NomeTabella].Constraints.Add(NomeColonnaChiave, DataSetXml.Tables[NomeTabella].Columns[NomeColonnaChiave], true);
}
// * Restituisce la risposta
return DataSetXml;
}
public string NomeFileSetup
{
get
{
return _NomeFileSetup;
}
set
{
_NomeFileSetup = value;
}
}
}
}

602
imagecatalog/PicSettings.cs Normal file
View file

@ -0,0 +1,602 @@

// Module PicSettings
// Private _DirectorySorgente As String
// Private _DirectoryDestinazione As String
// Private _DimVert As Integer
// Private _MargVert As Integer
// Private _DimStandard As Integer
// Private _DimStandardMiniatura As Integer
// Private _NomeData As Boolean
// Private _TestoNome As Boolean
// Private _UsaOrarioMiniatura As Boolean
// Private _UsaOrarioTestoApplicare As Boolean
// Private _UsaTempoGaraTestoApplicare As Boolean
// Private _TestoFirmaStart As String
// Private _TestoFirmaStartV As String
// Private _DataPartenza As DateTime
// Private _TestoOrario As String
// Private _UsaRotazioneAutomatica As Boolean
// Private _UsaForzaJpg As Boolean
// Private _LarghezzaSmall As Integer
// Private _AltezzaSmall As Integer
// Private _CreaMiniature As Boolean
// Private _AggiungiScritteMiniature As Boolean
// Private _AggTempoGaraMin As Boolean
// Private _AggNumTempMin As Boolean
// Private _Suffisso As String
// Private _Codice As String
// Private _Trasparenza As Integer
// Private _IlFont As String
// Private _Grassetto As Boolean
// Private _Posizione As String
// Private _Allineamento As String
// Private _Margine As Integer
// Private _LogoAltezza As Integer
// Private _LogoLarghezza As Integer
// Private _fontColoreRGB As Color
// Private _LogoAggiungi As Boolean
// Private _LogoNomeFile As String
// Private _LogoTrasparenza As String
// Private _LogoMargine As String
// Private _LogoPosizioneH As String
// Private _LogoPosizioneV As String
// Private _FotoGrandeDimOrigina As Boolean
// Private _AltezzaBig As Integer
// Private _LarghezzaBig As Integer
// Private _DestDir As DirectoryInfo
// Private _DimMin As Integer
// Private _TestoMin As Boolean
// Private _SecretDefault As Boolean
// Private _SecretBig As Boolean
// Private _SecretSmall As Boolean
// Private _SecretPathSmall As String
// Private _SecretPathBig As String
// Private _jpegQuality As Long
// Private _jpegQualityMin As Long
// Private FotoRuotaADestra As Boolean = False
// Private FotoRuotaASinistra As Boolean = False
// Private TempMinText As String = ""
// Private _mainForm As MainForm
// 'Private progressBar As System.Windows.Forms.ProgressBar
// Public Property mainForm() As MainForm
// Get
// Return _mainForm
// End Get
// Set(ByVal value As MainForm)
// _mainForm = value
// End Set
// End Property
// Public Property DirectorySorgente() As String
// Get
// Return _DirectorySorgente
// End Get
// Set(ByVal value As String)
// _DirectorySorgente = value
// End Set
// End Property
// Public Property DirectoryDestinazione() As String
// Get
// Return _DirectoryDestinazione
// End Get
// Set(ByVal value As String)
// _DirectoryDestinazione = value
// End Set
// End Property
// Public Property TestoFirmaStart() As String
// Get
// Return _TestoFirmaStart
// End Get
// Set(ByVal value As String)
// _TestoFirmaStart = value
// End Set
// End Property
// Public Property TestoFirmaStartV() As String
// Get
// Return _TestoFirmaStartV
// End Get
// Set(ByVal value As String)
// _TestoFirmaStartV = value
// End Set
// End Property
// Public Property DataPartenza() As DateTime
// Get
// Return _DataPartenza
// End Get
// Set(ByVal value As DateTime)
// _DataPartenza = value
// End Set
// End Property
// Public Property TestoOrario() As String
// Get
// Return _TestoOrario
// End Get
// Set(ByVal value As String)
// _TestoOrario = value
// End Set
// End Property
// Public Property DimStandard() As Integer
// Get
// Return _DimStandard
// End Get
// Set(ByVal value As Integer)
// _DimStandard = value
// End Set
// End Property
// Public Property DimStandardMiniatura() As Integer
// Get
// Return _DimStandardMiniatura
// End Get
// Set(ByVal value As Integer)
// _DimStandardMiniatura = value
// End Set
// End Property
// Public Property NomeData() As Boolean
// Get
// Return _NomeData
// End Get
// Set(ByVal value As Boolean)
// _NomeData = value
// End Set
// End Property
// Public Property TestoNome() As Boolean
// Get
// Return _TestoNome
// End Get
// Set(ByVal value As Boolean)
// _TestoNome = value
// End Set
// End Property
// Public Property UsaOrarioMiniatura() As Boolean
// Get
// Return _UsaOrarioMiniatura
// End Get
// Set(ByVal value As Boolean)
// _UsaOrarioMiniatura = value
// End Set
// End Property
// Public Property UsaOrarioTestoApplicare() As Boolean
// Get
// Return _UsaOrarioTestoApplicare
// End Get
// Set(ByVal value As Boolean)
// _UsaOrarioTestoApplicare = value
// End Set
// End Property
// Public Property UsaTempoGaraTestoApplicare() As Boolean
// Get
// Return _UsaTempoGaraTestoApplicare
// End Get
// Set(ByVal value As Boolean)
// _UsaTempoGaraTestoApplicare = value
// End Set
// End Property
// Public Property UsaRotazioneAutomatica() As Boolean
// Get
// Return _UsaRotazioneAutomatica
// End Get
// Set(ByVal value As Boolean)
// _UsaRotazioneAutomatica = value
// End Set
// End Property
// Public Property UsaForzaJpg() As Boolean
// Get
// Return _UsaForzaJpg
// End Get
// Set(ByVal value As Boolean)
// _UsaForzaJpg = value
// End Set
// End Property
// Public Property LarghezzaSmall() As Integer
// Get
// Return _LarghezzaSmall
// End Get
// Set(ByVal value As Integer)
// _LarghezzaSmall = value
// End Set
// End Property
// Public Property AltezzaSmall() As Integer
// Get
// Return _AltezzaSmall
// End Get
// Set(ByVal value As Integer)
// _AltezzaSmall = value
// End Set
// End Property
// Public Property CreaMiniature() As Boolean
// Get
// Return _CreaMiniature
// End Get
// Set(ByVal value As Boolean)
// _CreaMiniature = value
// End Set
// End Property
// Public Property AggiungiScritteMiniature() As Boolean
// Get
// Return _AggiungiScritteMiniature
// End Get
// Set(ByVal value As Boolean)
// _AggiungiScritteMiniature = value
// End Set
// End Property
// Public Property Suffisso() As String
// Get
// Return _Suffisso
// End Get
// Set(ByVal value As String)
// _Suffisso = value
// End Set
// End Property
// Public Property Codice() As String
// Get
// Return _Codice
// End Get
// Set(ByVal value As String)
// _Codice = value
// End Set
// End Property
// Public Property Trasparenza() As Integer
// Get
// Return _Trasparenza
// End Get
// Set(ByVal value As Integer)
// _Trasparenza = value
// End Set
// End Property
// Public Property IlFont() As String
// Get
// Return _IlFont
// End Get
// Set(ByVal value As String)
// _IlFont = value
// End Set
// End Property
// Public Property Grassetto() As Boolean
// Get
// Return _Grassetto
// End Get
// Set(ByVal value As Boolean)
// _Grassetto = value
// End Set
// End Property
// Public Property Posizione() As String
// Get
// Return _Posizione
// End Get
// Set(ByVal value As String)
// _Posizione = value
// End Set
// End Property
// Public Property Allineamento() As String
// Get
// Return _Allineamento
// End Get
// Set(ByVal value As String)
// _Allineamento = value
// End Set
// End Property
// Public Property Margine() As Integer
// Get
// Return _Margine
// End Get
// Set(ByVal value As Integer)
// _Margine = value
// End Set
// End Property
// Public Property LogoAltezza() As Integer
// Get
// Return _LogoAltezza
// End Get
// Set(ByVal value As Integer)
// _LogoAltezza = value
// End Set
// End Property
// Public Property LogoLarghezza() As Integer
// Get
// Return _LogoLarghezza
// End Get
// Set(ByVal value As Integer)
// _LogoLarghezza = value
// End Set
// End Property
// Public Property fontColoreRGB() As Color
// Get
// Return _fontColoreRGB
// End Get
// Set(ByVal value As Color)
// _fontColoreRGB = value
// End Set
// End Property
// Public Property LogoAggiungi() As Boolean
// Get
// Return _LogoAggiungi
// End Get
// Set(ByVal value As Boolean)
// _LogoAggiungi = value
// End Set
// End Property
// Public Property LogoNomeFile() As String
// Get
// Return _LogoNomeFile
// End Get
// Set(ByVal value As String)
// _LogoNomeFile = value
// End Set
// End Property
// Public Property LogoTrasparenza() As String
// Get
// Return _LogoTrasparenza
// End Get
// Set(ByVal value As String)
// _LogoTrasparenza = value
// End Set
// End Property
// Public Property LogoMargine() As String
// Get
// Return _LogoMargine
// End Get
// Set(ByVal value As String)
// _LogoMargine = value
// End Set
// End Property
// Public Property LogoPosizioneH() As String
// Get
// Return _LogoPosizioneH
// End Get
// Set(ByVal value As String)
// _LogoPosizioneH = value
// End Set
// End Property
// Public Property LogoPosizioneV() As String
// Get
// Return _LogoPosizioneV
// End Get
// Set(ByVal value As String)
// _LogoPosizioneV = value
// End Set
// End Property
// Public Property FotoGrandeDimOrigina() As Boolean
// Get
// Return _FotoGrandeDimOrigina
// End Get
// Set(ByVal value As Boolean)
// _FotoGrandeDimOrigina = value
// End Set
// End Property
// Public Property AltezzaBig() As Integer
// Get
// Return _AltezzaBig
// End Get
// Set(ByVal value As Integer)
// _AltezzaBig = value
// End Set
// End Property
// Public Property LarghezzaBig() As Integer
// Get
// Return _LarghezzaBig
// End Get
// Set(ByVal value As Integer)
// _LarghezzaBig = value
// End Set
// End Property
// Public Property DestDir() As DirectoryInfo
// Get
// Return _DestDir
// End Get
// Set(ByVal value As DirectoryInfo)
// _DestDir = value
// End Set
// End Property
// Public Property DimVert() As Integer
// Get
// Return _DimVert
// End Get
// Set(ByVal value As Integer)
// _DimVert = value
// End Set
// End Property
// Public Property MargVert() As Integer
// Get
// Return _MargVert
// End Get
// Set(ByVal value As Integer)
// _MargVert = value
// End Set
// End Property
// Public Property TestoMin() As Boolean
// Get
// Return _TestoMin
// End Get
// Set(ByVal value As Boolean)
// _TestoMin = value
// End Set
// End Property
// Public Property DimMin() As Integer
// Get
// Return _DimMin
// End Get
// Set(ByVal value As Integer)
// _DimMin = value
// End Set
// End Property
// Public Property SecretDefault() As Boolean
// Get
// Return _SecretDefault
// End Get
// Set(ByVal value As Boolean)
// _SecretDefault = value
// End Set
// End Property
// Public Property SecretBig() As Boolean
// Get
// Return _SecretBig
// End Get
// Set(ByVal value As Boolean)
// _SecretBig = value
// End Set
// End Property
// Public Property SecretSmall() As Boolean
// Get
// Return _SecretSmall
// End Get
// Set(ByVal value As Boolean)
// _SecretSmall = value
// End Set
// End Property
// Public Property SecretPathSmall() As String
// Get
// Return _SecretPathSmall
// End Get
// Set(ByVal value As String)
// _SecretPathSmall = value
// End Set
// End Property
// Public Property SecretPathBig() As String
// Get
// Return _SecretPathBig
// End Get
// Set(ByVal value As String)
// _SecretPathBig = value
// End Set
// End Property
// Public Property AggTempoGaraMin() As Boolean
// Get
// Return _AggTempoGaraMin
// End Get
// Set(ByVal value As Boolean)
// _AggTempoGaraMin = value
// End Set
// End Property
// Public Property AggNumTempMin() As Boolean
// Get
// Return _AggNumTempMin
// End Get
// Set(ByVal value As Boolean)
// _AggNumTempMin = value
// End Set
// End Property
// Public Property jpegQuality() As Long
// Get
// Return _jpegQuality
// End Get
// Set(ByVal value As Long)
// _jpegQuality = value
// End Set
// End Property
// Public Property jpegQualityMin() As Long
// Get
// Return _jpegQualityMin
// End Get
// Set(ByVal value As Long)
// _jpegQualityMin = value
// End Set
// End Property
// End Module

View file

@ -0,0 +1,273 @@
using System;
using System.Collections;
using System.Threading;
namespace ImageCatalog
{
public delegate void ThreadErrorHandlerDelegate(ThreadPoolWorkItem oWorkItem, Exception oError);
public class ThreadPoolWorkItem
{
public bool m_bStoreOutput = false;
public string m_sName = "";
public Delegate m_pMethod = null;
public object[] m_pInput = null;
public object m_oOutput = null;
public Exception m_oException = null;
public ThreadPoolWorkItem()
{
}
public ThreadPoolWorkItem(string sName, Delegate pMethod, object[] pInput, bool bStoreOutput)
{
m_sName = sName;
m_pMethod = pMethod;
m_pInput = pInput;
m_bStoreOutput = bStoreOutput;
}
}
public class XYThreadPool
{
public XYThreadPool()
{
m_delegateThreadErrorHandler = new ThreadErrorHandlerDelegate(OnThreadError);
}
private Hashtable m_htThreads = new Hashtable(256);
private int m_nMinThreadCount = 5;
private int m_nMaxThreadCount = 10;
private int m_nShutdownPause = 200;
private int m_nServerPause = 25;
private bool m_bContinue = false;
private Exception m_oException = null;
private Queue m_qInput = new Queue(1024);
private Queue m_qOutput = new Queue(1024);
private Delegate m_delegateThreadErrorHandler;
private void ThreadProc()
{
while (m_bContinue)
{
object obj = null;
Monitor.Enter(this);
if (m_qInput.Count > 0)
obj = m_qInput.Dequeue();
Monitor.Exit(this);
if (obj is null)
{
bool bQuit = false;
Monitor.Enter(this);
if (m_htThreads.Count > m_nMinThreadCount)
{
m_htThreads.Remove(Thread.CurrentThread.Name);
bQuit = true;
}
Monitor.Exit(this);
if (bQuit)
return;
Thread.Sleep(10 * m_nServerPause);
}
else
{
ThreadPoolWorkItem oWorkItem = (ThreadPoolWorkItem)obj;
// oWorkItem.m_oOutput = oWorkItem.m_pMethod.DynamicInvoke(oWorkItem.m_pInput)
try
{
oWorkItem.m_oOutput = oWorkItem.m_pMethod.DynamicInvoke(oWorkItem.m_pInput);
}
catch (Exception oBug)
{
if (m_delegateThreadErrorHandler is object)
{
try
{
var pInput = new object[] { oWorkItem, oBug };
m_delegateThreadErrorHandler.DynamicInvoke(pInput);
}
catch
{
}
}
}
if (oWorkItem.m_bStoreOutput)
{
Monitor.Enter(m_qOutput);
m_qOutput.Enqueue(oWorkItem);
Monitor.Exit(m_qOutput);
}
Thread.Sleep(m_nServerPause);
}
}
}
private void OnThreadError(ThreadPoolWorkItem oWorkItem, Exception oError)
{
if (oWorkItem is null)
{
m_oException = oError;
}
else
{
oWorkItem.m_oException = oError;
}
}
public void SetThreadErrorHandler(ThreadErrorHandlerDelegate pMethod)
{
Monitor.Enter(this);
m_delegateThreadErrorHandler = pMethod;
Monitor.Exit(this);
}
public void SetServerPause(int nMilliseconds)
{
Monitor.Enter(this);
if (nMilliseconds > 9 & nMilliseconds < 101)
m_nServerPause = nMilliseconds;
Monitor.Exit(this);
}
public void SetShutdownPause(int nMilliseconds)
{
Monitor.Enter(this);
m_nShutdownPause = nMilliseconds;
Monitor.Exit(this);
}
public Exception GetException()
{
return m_oException;
}
public void InsertWorkItem(ThreadPoolWorkItem oWorkItem)
{
try
{
Monitor.Enter(this);
m_qInput.Enqueue(oWorkItem);
if (m_bContinue && m_qInput.Count > m_htThreads.Count && m_htThreads.Count < m_nMaxThreadCount)
{
var th = new Thread(ThreadProc);
th.Name = Guid.NewGuid().ToString();
m_htThreads.Add(th.Name, th);
th.Start();
}
}
catch (Exception oBug)
{
m_oException = oBug;
}
finally
{
Monitor.Exit(this);
}
}
public void InsertWorkItem(string sName, Delegate pMethod, object[] pArgs, bool bStoreOutput)
{
InsertWorkItem(new ThreadPoolWorkItem(sName, pMethod, pArgs, bStoreOutput));
}
public ThreadPoolWorkItem ExtractWorkItem()
{
object oWorkItem = null;
Monitor.Enter(m_qOutput);
if (m_qOutput.Count > 0)
oWorkItem = m_qOutput.Dequeue();
Monitor.Exit(m_qOutput);
if (oWorkItem is null)
return null;
return (ThreadPoolWorkItem)oWorkItem;
}
public bool StartThreadPool(int nMinThreadCount = 5, int nMaxThreadCount = 10)
{
try
{
Monitor.Enter(this);
if (m_bContinue == false)
{
m_bContinue = true;
if (nMinThreadCount > 0)
{
m_nMinThreadCount = nMinThreadCount;
}
if (nMaxThreadCount > m_nMinThreadCount)
{
m_nMaxThreadCount = nMaxThreadCount;
}
else
{
m_nMaxThreadCount = 2 * m_nMinThreadCount;
}
int i;
var loopTo = m_nMinThreadCount;
for (i = 1; i <= loopTo; i++)
{
var th = new Thread(ThreadProc);
th.Name = Guid.NewGuid().ToString();
m_htThreads.Add(th.Name, th);
th.Start();
}
}
return true;
}
catch (Exception oBug)
{
m_bContinue = false;
m_oException = oBug;
return false;
}
finally
{
Monitor.Exit(this);
}
}
public void StopThreadPool()
{
Monitor.Enter(this);
m_bContinue = false;
Thread.Sleep(Math.Max(200, m_nShutdownPause));
if (m_nShutdownPause > 0)
{
var dict = m_htThreads.GetEnumerator();
while (dict.MoveNext())
{
Thread th = (Thread)dict.Value;
if (th.IsAlive)
{
try
{
th.Abort();
}
catch
{
}
}
}
}
m_htThreads.Clear();
m_qInput.Clear();
// m_qOutput.Clear()
Monitor.Exit(this);
}
public int GetThreadCount()
{
Monitor.Enter(this);
int nCount = m_htThreads.Count;
Monitor.Exit(this);
return nCount;
}
}
}

View file

@ -1,35 +1,39 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.diagnostics>
<sources>
<!-- Questa sezione definisce la configurazione di registrazione per My.Application.Log -->
<source name="DefaultSource" switchName="DefaultSwitch">
<listeners>
<add name="FileLog" />
<add name="FileLog"/>
<!-- Per scrivere nel log eventi dell'applicazione, rimuovere il commento dalla sezione sottostante -->
<!--<add name="EventLog"/>-->
</listeners>
</source>
</sources>
<switches>
<add name="DefaultSwitch" value="Information" />
<add name="DefaultSwitch" value="Information"/>
</switches>
<sharedListeners>
<add name="FileLog" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" initializeData="FileLogWriter" />
<add name="FileLog" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" initializeData="FileLogWriter"/>
<!-- Per scrivere nel log eventi dell'applicazione, rimuovere il commento dalla sezione sottostante e sostituire APPLICATION_NAME con il nome dell'applicazione -->
<!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> -->
</sharedListeners>
</system.diagnostics>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /></startup>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/></startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
<assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>

View file

@ -1,11 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Ben.Demystifier" version="0.3.0" targetFramework="net472" />
<package id="Microsoft.WindowsAPICodePack-Core" version="1.1.0.2" targetFramework="net472" />
<package id="Microsoft.WindowsAPICodePack-Shell" version="1.1.0.0" targetFramework="net472" />
<package id="System.Buffers" version="4.5.1" targetFramework="net472" />
<package id="System.Collections.Immutable" version="5.0.0" targetFramework="net472" />
<package id="System.Memory" version="4.5.4" targetFramework="net472" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net472" />
<package id="System.Reflection.Metadata" version="5.0.0" targetFramework="net472" />
<package id="System.Runtime.CompilerServices.Unsafe" version="4.5.3" targetFramework="net472" />
<package id="System.Runtime.CompilerServices.Unsafe" version="5.0.0" targetFramework="net472" />
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net472" />
</packages>