我正在尝试启动分配给IHostBuilder的services.HostedService的BackgroundService。
IHostBuilder定义:
private static IHostBuilder CreateHostBuilder()
{
return Host.CreateDefaultBuilder()
.ConfigureServices(services =>
{
services.AddHostedService<LicenseControl>();
services.AddTransient<Database>();
services.AddTransient<CoreLicense>();
services.AddSingleton<FormSelector>();
services.AddTransient<ClienteForm>();
services.AddTransient<GastoForm>();
services.AddTransient<IngredienteForm>();
services.AddTransient<ProdutoForm>();
services.AddTransient<ReceitaForm>();
services.AddTransient<RelatorioForm>();
services.AddTransient<VendaForm>();
services.AddTransient<MainForm>();
services.AddTransient<ConfiguracoesForm>();
services.AddTransient<UsuarioForm>();
services.AddSingleton<AuthenticationForm>();
services.AddScoped<IBridgeRepository, BridgeRepository>();
services.AddScoped<IClienteRepository, ClienteRepository>();
services.AddScoped<IGastoRepository, GastoRepository>();
services.AddScoped<IIBGERepository, IBGERepository>();
services.AddScoped<IIngredienteRepository, IngredienteRepository>();
services.AddScoped<IProdutoRepository, ProdutoRepository>();
services.AddScoped<IReceitaRepository, ReceitaRepository>();
services.AddScoped<IVendaRepository, VendaRepository>();
services.AddScoped<IUsuarioRepository, UsuarioRepository>();
services.AddLogging(
builder =>
{
builder.AddFilter("Microsoft", LogLevel.Warning)
.AddFilter("System", LogLevel.Warning)
.AddFilter("NToastNotify", LogLevel.Warning)
.AddConsole();
}
);
});
}
Run Code Online (Sandbox Code Playgroud)
但我发现启动HostedService 的唯一可能的方法是运行以下命令:
await CreateHostBuilder().Build().RunAsync();
Run Code Online (Sandbox Code Playgroud)
最后,问题发生是因为在这种方法中,线程锁定在该行上,并且不允许我运行公共块代码来启动表单本身:
Application.Run(new MainForm());
Run Code Online (Sandbox Code Playgroud)
如果我先运行表单,也会发生同样的情况,线程会锁定该行,并且不会让我调用HostBuilder …
我正在做一个主详细页面作为菜单,但出现此错误:
Android上不全局支持PushAsync,请使用NavigationPage。
当我尝试实例化另一个页面时。我相信我的代码在实例化页面时已经创建了一个导航页面,但是我不确定。有人能帮我吗?
App.xaml.cs:
public partial class App : Application
{
static public MasterDetailPage MasterDetail { get; set; }
public async static Task NavigateMasterDetail(Page page)
{
App.MasterDetail.IsPresented = false;
await App.MasterDetail.Navigation.PushAsync(page);
}
public App ()
{
InitializeComponent();
MainPage = new selectPage();
}
Run Code Online (Sandbox Code Playgroud)
带有菜单的页面,请选择页面:
public partial class selectPage : MasterDetailPage
{
public selectPage()
{
InitializeComponent();
this.Master = new Master();
this.Detail = new NavigationPage(new Detail());
App.MasterDetail = this;
}
}
Run Code Online (Sandbox Code Playgroud)
Master.xaml.cs:
public Master ()
{
InitializeComponent ();
toDivPage.Clicked += async (sender, e) …Run Code Online (Sandbox Code Playgroud)