Progress Dialog não desaparece

Possuo uma activity na qual estão 3 asynctasks, e elas são chamadas de acordo com o que é selecionado de uma listview pertencente à essa tela tbm. O problema é que quando eu estou enviando todos os itens dessa listview de uma vez o último ProgressDialog que eu possuo não está sumindo da tela, mesmo eu dando um .dismiss() no PostExecute da minha AsyncTask.

Segue os códigos das AsyncTasks:

private class CotacaoTask extends AsyncTask<Object, Object, String> {
private final Context ctx;
private final PedidoDados pedido;

public CotacaoTask(Context ctx, PedidoDados pedido) {
    this.ctx = ctx;
    this.pedido = pedido;
}

@Override
protected void onPreExecute() {
    dialog = ProgressDialog.show(ctx, "Aguarde", "Transmitindo dados...");
}

@Override
protected String doInBackground(Object[] params) {
    Gson gson = new Gson();
    String pedidoJson = gson.toJson(pedido);

    EnviarPedido pedidoEnviado = new EnviarPedido();
    String resposta = pedidoEnviado.post(ctx, pedidoJson);
    status = gson.fromJson(resposta, String.class);
    return status;
}

@Override
protected void onPostExecute(String o) {
    dialog.dismiss();
    Pedidos_DadosDAO dao = new Pedidos_DadosDAO(ctx);

    SimpleDateFormat dataFormat = new SimpleDateFormat("dd/MM/yyyy");
    SimpleDateFormat horaFormat = new SimpleDateFormat("HH:mm:ss");

    Date data = new Date();
    Calendar cal = Calendar.getInstance();
    cal.setTime(data);
    Date data_atual = cal.getTime();

    String data_completa = dataFormat.format(data_atual);
    String hora_completa = horaFormat.format(data_atual);

    pedido.setDataenvio(data_completa);
    pedido.setHoraenvio(hora_completa);
    if (o != null && !o.equals("0")){
        pedido.setStatus("1");
        pedido.setPedidosantana(Integer.parseInt(o));
        Toast.makeText(ctx, "Orçamento " + o + " gerado no Sistema", Toast.LENGTH_SHORT).show();
    } else {
        Toast.makeText(ctx, "Ocorreu um erro! \n" + "Tente novamente ou entre em contato com o suporte", Toast.LENGTH_SHORT).show();
    }
    dao.altera(null, 0, null, null, null, null, pedido, false, pedido.getItens(), ctx);

    carregaLista(tipos[spnEnvios.getSelectedItemPosition()]);
}


private class VisitaTask extends AsyncTask<Object, Object, String>{
private Context ctx;
private Visita visita;

public VisitaTask(Context ctx, Visita visita) {
    this.ctx = ctx;
    this.visita = visita;
}

@Override
protected void onPreExecute() {
    dialog = ProgressDialog.show(ctx, "Aguarde", "Transmitindo dados...");
}

@Override
protected String doInBackground(Object... params) {
    Gson gson = new Gson();
    String pedidoJson = gson.toJson(visita);

    EnviarVisita visitaEnviada = new EnviarVisita();
    String resposta = visitaEnviada.post(ctx, pedidoJson);
    status = gson.fromJson(resposta, String.class);
    return status;
}

@Override
protected void onPostExecute(String o) {
    dialog.dismiss();
    VisitaDAO dao = new VisitaDAO(ctx);

    if (o != null && !o.equals("0")){
        visita.setStatus("2");
        Toast.makeText(ctx, "Visita " + o + " gerada no Sistema", Toast.LENGTH_SHORT).show();
    } else {
        Toast.makeText(ctx, "Ocorreu um erro! \n" + "Tente novamente ou entre em contato com o suporte", Toast.LENGTH_SHORT).show();
    }
    dao.altera(visita, MainActivity.usuarioLogado.getId());

    carregaLista(tipos[spnEnvios.getSelectedItemPosition()]);
}

}

private class FichaTask extends AsyncTask<Object, Object, String>{
private final Context ctx;
private final FichaCadastral ficha;
private String base64;
private File file;

private FichaTask(Context ctx, FichaCadastral ficha) {
    this.ctx = ctx;
    this.ficha = ficha;
}

@Override
protected void onPreExecute() {
    dialog = ProgressDialog.show(ctx, "Aguarde", "Transmitindo dados...");
}

@Override
protected String doInBackground(Object... params) {
    Gson gson = new Gson();
    List<String> listaDocumentos = new ArrayList<>();
    FileInputStream fs;
    List<FichaCadastralDoc> documentos = ficha.getDocumentos();
    byte[] bDoc;

    for (FichaCadastralDoc doc : documentos) {
        file = new File(doc.getCaminho());

        bDoc = new byte[(int) file.length()];

        try {
            fs = new FileInputStream(file);
            fs.read(bDoc);
            fs.close();

            base64 = Base64.encodeToString(bDoc, Base64.DEFAULT);
            listaDocumentos.add(base64);
        }catch (IOException e) {
            e.printStackTrace();
        }
    }

    String fichaJson = gson.toJson(ficha);
    String fichaDocJson = gson.toJson(listaDocumentos);

    EnviarFicha fichaEnviada = new EnviarFicha();
    String resposta = fichaEnviada.post(ctx, fichaJson, fichaDocJson);
    status = gson.fromJson(resposta, String.class);
    return status;
}

@Override
protected void onPostExecute(String o) {
    dialog.dismiss();
    FichaCadastralDAO dao = new FichaCadastralDAO(ctx);

    if (o != null && !o.equals("0")){
        ficha.setStatus("1");
        ficha.setFichaSantana(Integer.parseInt(o));
        Toast.makeText(ctx, "Ficha Cadastral " + o + " gerada no Sistema", Toast.LENGTH_SHORT).show();
    } else {
        Toast.makeText(ctx, "Ocorreu um erro! \n" + "Tente novamente ou entre em contato com o suporte", Toast.LENGTH_SHORT).show();
    }
    dao.alteraAsyncTask(ficha, MainActivity.usuarioLogado.getId());

    carregaLista(tipos[spnEnvios.getSelectedItemPosition()]);
}

}