Я пытаюсь оптимизировать небольшую программу.Итак, вот основная идея:
У меня есть массив нефильтрованных данных, и я хочу передать это функции, которая дважды вызовет другую функцию для фильтрации данных и вставки в новый список.Первый вызов будет принимать данные из исходного массива в диапазоне от 0 => половины длины массивов, а второй будет делать то же самое, но с диапазоном от половины до последнего элемента.Таким образом, я должен сделать одновременную вставку отфильтрованных данных в один и тот же список.После завершения вставки отфильтрованный список может быть передан остальной части программы.Вот код:
static void Main(string[]
{
// the unfiltered list
int[] oldArray = new int[6] {1,2,3,4,5,6};
// filtered list
List<int> newList= new List<int>();
// Functions is my static class
Functions.Insert(newList, oldArray )
Continue_Program_With_Filtered_List(newList);
// remaining functions...
}
А вот класс Function:
public static class Functions
{
public static void Insert(List<int> newList, int[] oldArray)
{
new Thread(() =>
{
Inserter(newList, oldArray, true);
}).Start();
new Thread(() =>
{
Inserter(newList, oldArray, false);
}).Start();
// I need to wait the result here of both threads
// and make sure that every item from oldArray has been filtered
// before I proceed to the next function in Main()
}
public static void Inserter(List<int> newList, int[] oldArray, bool countUp)
{
bool filterIsValid = false;
int length = oldArray.Length;
int halflen = (int)Math.Floor((decimal)length / 2);
if (countUp)
{
// from half length to 0
for (int i = 0; i < halflen; i++)
{
// filtering conditions here to set value of filterIsValid
if(filterIsValid)
newList.Add(oldArray[i]);
}
}
else
{
// from half length to full length
for (int i = halflen + 1; i < length; i++)
{
// filtering conditions here to set value of filterIsValid
if(filterIsValid)
newList.Add(oldArray[i]);
}
}
}
}
Итак, проблема в том, что я должен ждать Function.Insert (), чтобы завершить каждый поток и пройти черезкаждый элемент до newList передается следующей функции в Main ().
Я не знаю, как использовать Tasks или асинхронный метод для чего-то подобного.Кстати, это всего лишь набросок программы.Любая помощь?