"я не вижу проблем, я не хочу развиваться, я застрял в 90х и мне норм, пишу как умею".
А причем тут функциональный подход? Или увидели монады и все, "а-а-а, ФП, сложна, лучше пойду дальше быдлокодить"?
!(value is null)
value != null
output != null
#nullable enable
using System;
using System.Diagnostics;
using System.Windows.Forms;
namespace WindowsFormsApp
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
private async void OnButtonClick(object sender, EventArgs e)
{
button.Enabled = false;
try
{
using var process = Process.Start(psi);
bool hasOutput, hasErrors;
do
{
string? output = await process.StandardOutput.ReadLineAsync();
string? errors = await process.StandardError.ReadLineAsync();
hasOutput = output != null;
hasErrors = errors != null;
if (hasOutput) richTextBox.AppendText(output);
if (hasErrors) richTextBox.AppendText(errors);
} while (hasOutput || hasErrors);
}
catch (Exception ex)
{
// Логируем и/или выводим на экран информацию.
}
finally
{
button.Enabled = true;
}
}
}
}
<LangVersion>latest</LangVersion>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<LangVersion>latest</LangVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<LangVersion>latest</LangVersion>
</PropertyGroup>