internal class MainViewModel
{
private sealed class PlayCmd(MainViewModel mainViewModel) : ICommand
{
/// <summary>
/// Можно ли вызвать команду? Влияет на доступность привязанных к команде контролов, например кнопки
/// </summary>
public bool CanExecute(object? parameter) =>
// команду Play можно вызвать только если мы ещё не начали проигрывание
!mainViewModel.isPlaying;
/// <summary>
/// Ивент, нужный чтобы уведомить об изменении значения свойства CanExecute
/// </summary>
public event EventHandler? CanExecuteChanged;
public void Execute(object? parameter)
{
// вызываем метод у вьюмодели
mainViewModel.Play();
// дёргаем событие, чтобы сообщить всем, кто привязался к команде,
// что её статус "можно исполнить" изменился
// если этого не сделать, то кнопка НЕ задизаблится (хотя CanExecute уже возвращает false)
this.OnCanExecuteChanged();
}
private void OnCanExecuteChanged() =>
this.CanExecuteChanged?.Invoke(this, EventArgs.Empty);
}
private readonly PlayCmd playCommand;
private bool isPlaying = false;
public MainViewModel()
{
this.playCommand = new(this);
}
public ICommand PlayCommand => this.playCommand;
public void Play()
{
//Player.Play();
this.isPlaying = true;
}
}
<Window x:Class="Miramax.MainWindow"
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"
xmlns:local="clr-namespace:Miramax"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Window.DataContext>
<local:MainViewModel />
</Window.DataContext>
<Grid>
<Button Command="{Binding PlayCommand}">Click</Button>
</Grid>
</Window>
Экспортированная функция работает в 4 раза медленнее.
ВОПРОС как сделать функцию sum в с++ что бы она работала так же быстро как и sum в c# коде? Как ее заинлайнить
К примеру, если хочу c# библиотеку сделать, то просто добавили ссылку и забыл о всем. А когда добавляю так же ссылку на dll от с++ проекта, то ноль реакции.
Кстати еще вопрос, как библиотеку с++ подключать к проекту, почему DllImport не находит, если указать ссылку на проект,
Но ведь при классической многопоточности никакой поток так же не блокируется
Тем более при асинхронности практически всегда подразумевается многопоточность
drschool_Data.command.Parameters.Add(new NpgsqlParameter("value4", NpgsqlDbType.Integer)); // тут Integer
...
string selectedPlace = place.SelectedItem.ToString();
drschool_Data.command.Parameters[3].Value = selectedPlace; // тут String
...
вероятнее всего я даже не путаю, а просто неверно понимаю принцип работы. Я полагаю, что PostAsync действует как для запроса, так и для ответа, верно? Если нет, то что служит для отправки ответа, а самое главное, как в этот ответ положить свою информацию?
using System;
using System.Text.RegularExpressions;
public class Program
{
public static void Main()
{
string data = "some text *text* ok *text* hello **world*";
// Надо, чтобы стало "some text **text** ok **text** hello ***world**"
string pattern = @"(?:[*])([^*].*?)(?:[*])";
var regex = new Regex(pattern);
var result = regex.Replace(data, m => $"*{m.Value}*");
Console.WriteLine(result);
}
}
Если других способов нет, то что еще можно использовать для Сида, что бы рандом был правда хорошим, а не таким какой он есть по умолчанию.
For example, in C#, if Cat is a subtype of Animal, then:
IEnumerable<Cat>
is a subtype ofIEnumerable<Animal>
. The subtyping is preserved becauseIEnumerable<T>
is covariant on T.Action<Animal>
is a subtype ofAction<Cat>
. The subtyping is reversed becauseAction<T>
is contravariant on T.