this.Invoke((MethodInvoker) delegate() {
ProgressBar.PerformStep();
});
this.Invoke
(это запомнить) чтобы он ее вызвал в потоке UI, а MethodInvoker просто приведение типа.this.Invoke((MethodInvoker) (() =>
{
ProgressBar.PerformStep();
}));
this.Invoke((MethodInvoker) () =>
{
ProgressBar.PerformStep();
});
0.5
, "abc"
или new Button()
) является следующее:() =>
{
ProgressBar.PerformStep();
}
MethodInvoker
, зачем тогда эти скобки вокруг значения, мы же не пишем int x = (int)(0.5);
, увы но при приведении типов вообще не всегда можно ограничиться круглым скобками лишь для типа и опустить их для приводимого значения, конечно можно об этом забыть и не скомпилируется, но с опытом уже знаешь, если приведение не компилируется, то нужно попробовать добавить скобки для значения. IProgress<int> progress;
progress = new Progress((i) =>
{
progressBar.Value = i;
});
public Task calc(IProgress<int> progress)
{
return Task.Run(() =>
{
for (int i = 0; i < listToCalc.Count; i++) {
listOfWells.Add(new Well(listToCalc[i]));
listOfWells[i].calcP();
progress.Report(i)
}
});
}
private async void button3_Click(object sender, EventArgs e)
{
ProgressBar.Maximum = listToCalc.Count;
ProgressBar.Value = 0;
ProgressBar.Step = 1;
listOfWells.Clear();
await calc();
}
var
Form1: TForm1;
list: TStringList;
procedure TForm1.FormCreate(Sender: TObject);
begin
label1.Caption := '';
label1.AutoSize := True;
label1.Color := clInactiveBorder;
list := TStringList.Create;
list.Add('Титры');
list.Add('Какой-то текст');
list.Add('');
list.Add('1');
list.Add('2');
list.Add('3');
list.Add('');
list.Add('4');
list.Add('5');
end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: boolean);
begin
list.Free;
end;
procedure MoveTitle();
var
item: string;
begin
while (True) do
begin
if (Form1.Button1.Tag = 0) then
exit;
Form1.Label1.Caption := '';
for item in list do
begin
Form1.label1.Caption := Form1.label1.Caption + #13 + item;
end;
list.Insert(0, list[list.Count - 1]);
list.Delete(list.Count - 1);
Application.ProcessMessages;
Sleep(500);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if (button1.Tag = 0) then
begin
button1.Tag := 1;
MoveTitle;
end
else
button1.Tag := 0;
end;
Sub Replace()
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "@here"
.Replacement.Text = "^c"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
JFileChooser fileChooser = new JFileChooser();
//возможность выбирать только директории
fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
//выбор только одной директории
fileChooser.setMultiSelectionEnabled(false);
fileChooser.setDialogType(JFileChooser.OPEN_DIALOG);
//открываем окно, и ждем статуса выбора файла
int status = fileChooser.showOpenDialog(null);
//если была нажата кнопка открыть
if(status == JFileChooser.APPROVE_OPTION){
//получаем выбранную дтректорию
File dir = fileChooser.getSelectedFile();
//делаешь проверки разные если нужно
if(dir==null){
}
//если папка не существует
if(dir.exists()==false){
}
//получаешь список файлов в указанной директории
File[] files = dir.listFiles();
for (File file : files) {
//делаешь с файлами что нужно, не забывай проверять является ли файл директорией или файлом.
}
}
то не проще будет присвоить объекту модификатор static?